2016-01-20 148 views
2

我想在網頁視圖中加載網頁,我可以這樣做,但是有一個按鈕可以讓您上傳文件。當我在Android的Chrome應用程序中加載頁面時,此按鈕可以正常工作,並且它會打開文件瀏覽器,Web視圖上的任何事情都不會發生。是否有可能使用鉻瀏覽網頁,或者一些如何讓這個按鈕從網頁視圖中觸發文件選擇器?Android Webview vs Android Chrome瀏覽器

我試圖改變網絡視圖選項啓用javascript ECT,下面是針對webactivity代碼:

public class WebActivity extends Activity { 
Button b1; 
WebView wv; 





@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_web); 

    b1=(Button)findViewById(R.id.button); 

    wv=(WebView)findViewById(R.id.webView); 
    //wv1.setWebViewClient(new MyBrowser()); 

    wv.setWebChromeClient(new WebChromeClient()); 
    b1.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 

      WebSettings webSettings = wv.getSettings(); 
      webSettings.setJavaScriptEnabled(true); 
      webSettings.setAppCacheEnabled(true); 
      webSettings.setJavaScriptCanOpenWindowsAutomatically(true); 
      webSettings.setAllowFileAccess(true); 
      wv.setScrollBarStyle(View.SCROLLBARS_OUTSIDE_OVERLAY); 

      wv.loadUrl("MY WEBSITE URL"); 
      wv.setWebChromeClient(new WebChromeClient()); 
      wv.setWebViewClient(new WebViewClient() { 

       @Override 
       public boolean shouldOverrideUrlLoading(WebView view, String url) { 
        // TODO Auto-generated method stub 
        if (url.startsWith("tel:") || url.startsWith("mailto:")) { 
         Intent intent = new Intent(Intent.ACTION_VIEW, 
           Uri.parse(url)); 
         startActivity(intent); 
        }else if(url.startsWith("http:") || url.startsWith("https:")) { 
         view.loadUrl(url); 
        } 
        return true; 
       } 
      }); 

     } 
    }); 
} 

}

+1

瀏覽器擁有所有API來完成所有這些功能。如果你想要所有的功能,而無需爲webview編寫額外的代碼,那麼我建議你嵌入人行橫道作爲webview的替代品。 - https://crosswalk-project.org/ - https://crosswalk-project.org/documentation/apis/embedding_api.html - 它會增加約19megs的應用程序,但瀏覽器非常好 – Tasos

+0

將有一看 – Lawtonj94

+0

有一個簡單的如何教程的android工作室,所以你可以測試,看看你是否喜歡使用它 - https://diego.org/2015/01/07/embedding-crosswalk-in-android-studio/ - 但改變(編譯'org.xwalk:xwalk_core_library:10.39.235.15')到最新的版本號可以在這裏找到https://crosswalk-project.org/documentation/downloads.html目前是(16.45.421.19 ) - – Tasos

回答

0

但是也有一些不是默認啓用的一些選項,最有可能的你沒有JavaScript。

WebSettings webSettings = mWebView.getSettings(); 
webSettings.setJavaScriptEnabled(true); 
+0

我已將這些添加到選項中,我將它添加到問題 wv1.getSettings()。setLoadsImagesAutomatically(true); wv1.getSettings()。setJavaScriptEnabled(true); wv1.getSettings()。setAllowFileAccess(true); 它仍然不起作用 – Lawtonj94

1

試試下面的代碼。

WebView wv; 
    WebSettings webSettings = wv.getSettings(); 
    webSettings.setJavaScriptEnabled(true); 
    webSettings.setAppCacheEnabled(true); 
    webSettings.setJavaScriptCanOpenWindowsAutomatically(true); 
    webSettings.setAllowFileAccess(true); 
    wv.setScrollBarStyle(View.SCROLLBARS_OUTSIDE_OVERLAY); 

    wv.loadUrl("YOUR URL HERE"); 
      wv.setWebViewClient(new WebViewClient() { 

       @Override 
       public boolean shouldOverrideUrlLoading(WebView view, String url) { 
        // TODO Auto-generated method stub 
        if (url.startsWith("tel:") || url.startsWith("mailto:")) { 
         Intent intent = new Intent(Intent.ACTION_VIEW, 
           Uri.parse(url)); 
         startActivity(intent); 
        }else if(url.startsWith("http:") || url.startsWith("https:")) { 
         view.loadUrl(url); 
        } 
        return true; 
       } 
      }); 

    wv.setWebChromeClient(new WebChromeClient()); 

希望這會對你有幫助。

+0

必須嘗試wv.setWebChromeClient(new WebChromeClient()); –

+0

我仍然得到同樣的問題,我不知道爲什麼 – Lawtonj94