设备android中的WebChromeClient无法正常工作

时间:2014-08-19 00:26:34

标签: android android-webview webchromeclient

我在加载webview时使用了此代码,该视图使用了Google Chrome的属性。

问题是webview加载了一个包含html5的网址的模拟器,它运行完美,但在Android设备上使用默认浏览器和html5的属性显然不起作用。

我如何才能在Android设备中使用Google Chrome浏览器的属性而不是默认浏览器?

有任何帮助吗?

谢谢

public View onCreateView(LayoutInflater inflater, 
            ViewGroup container, Bundle savedInstanceState) {



        // Capturo las variables que dejo en memoria, nombre y email

        SharedPreferences sp1 = PreferenceManager.getDefaultSharedPreferences(getActivity().getApplicationContext());
        emailAdd = sp1.getString("EMAILADDRESS", "");
        name = sp1.getString("NAME", "");

        //-----------------------------------------------


        View x = inflater.inflate(R.layout.patrocinadores, container, false);

        String url = "http://xxxx.co/xxxx/xxxx.php?email="+ emailAdd + "";


        mWebView = (WebView) x.findViewById(R.id.webView1);


        // Para colocar un loading

        pd = ProgressDialog.show(getActivity(), "", "Loading...",true);

        //--------------------------

        if(mWebView != null){

            mWebView.getSettings().setJavaScriptEnabled(true);
            mWebView.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE);
            mWebView.getSettings().setAppCacheEnabled(false); 
            mWebView.getSettings().setAllowFileAccess(true);
            mWebView.getSettings().setAllowContentAccess(true);



            mWebView.loadUrl(url);
            mWebView.setWebChromeClient(new WebChromeClient());

            mWebView.setWebViewClient(new WebViewClient() {



                // Coloca un loading mientras se carga el webview y se quita cuando se carga la pagina


                public void onPageFinished(WebView view, String url) {
                    if(pd.isShowing()&&pd!=null)
                    {
                        pd.dismiss();
                    }
                }

                //-----------------------------------------------


                public boolean shouldOverrideUrlLoading(WebView view, String url) {
                    view.loadUrl(url);
                    return true;
                }
            });
        }

        return x;
    }

1 个答案:

答案 0 :(得分:0)

我不确定我是否完全理解您所指的内容,但HTML5受支持,如果您考虑了某些项目,则应该在您的应用中使用。

首先,WebChromeClient()不是指谷歌Chrome浏览器,而是指原始 Chrome 术语,代表网页周围的UI元素(IE,按钮,滚动条等)。从这个意义上说,您可以像WebChromeClient()一样实施自己的WebViewClient(),覆盖某些默认行为,例如JavaScript弹出窗口/通知,标题和其他窗口功能。

您可以在此处查看其他定义:https://developer.mozilla.org/en-US/docs/Glossary/Chrome

此外,如果您指的是缩放和布局,那么我会引导您WebView Overview,特别是Pixel-Perfect UI。例如,设置视口和概览模式:

mWebView.getSettings().setUseWideViewPort(true)
mWebView.getSettings().setLoadWithOverviewMode(true)

修改

进度条未按预期工作。设置客户端后尝试呼叫mWebView.loadUrl(url)

mWebView.setWebChromeClient(new WebChromeClient());
mWebView.setWebViewClient(new WebViewClient(){...});
mWebView.loadUrl(url);

并覆盖onPageStarted()中的WebViewClient()

@Override
public void onPageStarted (WebView view, String url, Bitmap favicon) {
    pd.show();
}