【问题标题】:Android Webview vs Android Chrome BrowserAndroid Webview 与 Android Chrome 浏览器
【发布时间】:2016-01-20 13:51:14
【问题描述】:

我正在尝试在 Web 视图中加载网页,我可以这样做,但是有一个按钮可以让您上传文件。当我在 android 上的 Chrome 应用程序中加载页面并打开文件浏览器时,此按钮可以正常工作,但是在 web 视图中没有任何反应。是否可以将 chrome 用于 web 视图,或者如何让这个按钮从 web 视图中触发文件选择器?

我已尝试更改 web 视图选项以启用 javascript 等,以下是 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;
                }
            });

        }
    });
}

}

【问题讨论】:

标签: android webview filechooser


【解决方案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());

希望这会对你有所帮助。

【讨论】:

  • 一定要试试 wv.setWebChromeClient(new WebChromeClient());
  • 我仍然遇到同样的问题,我不知道为什么
【解决方案2】:

有些选项默认没有启用,很可能你没有javascript。

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

【讨论】:

  • 我已将这些添加到选项中,我将其添加到问题 wv1.getSettings().setLoadsImagesAutomatically(true); wv1.getSettings().setJavaScriptEnabled(true); wv1.getSettings().setAllowFileAccess(true);还是不行
猜你喜欢
  • 2014-12-27
  • 2013-10-28
  • 2011-11-14
  • 2017-03-27
  • 1970-01-01
  • 2014-07-15
  • 1970-01-01
  • 2023-04-10
  • 1970-01-01
相关资源
最近更新 更多