【问题标题】:WebChromeClient in device android not work设备android中的WebChromeClient不起作用
【发布时间】:2014-08-19 00:26:34
【问题描述】:

我有这个带有加载 webview 的代码,它使用 Google Chrome 的属性。

问题在于,webview 的模拟器加载了一个包含 html5 的 url,它可以完美运行,但是在使用默认浏览器和 html5 属性的 android 设备上显然无法使用该 url。

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

有什么帮助吗?

谢谢

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;
    }

【问题讨论】:

    标签: android android-webview webchromeclient


    【解决方案1】:

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

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

    您可以在此处查看其他定义: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);
    

    并在WebViewClient() 中覆盖onPageStarted()

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

    【讨论】:

    • 好的,我明白了。问题是 taq 是 webview 中显示的 url,在模拟器中完美,但在移动 android 设备中显示不正确。不显示进度值,仅显示空白栏。这个进步就是 html5 taq。
    • 哦。设置客户端后尝试调用加载 URL。
    • 当我写你建议我的方法时 onPageStarted 告诉我这个:来自类型 new WebViewClient () {} 的方法 onPageStarted (WebView, String) 永远不会在本地使用,如果我写 @Override 告诉我我这个:new WebViewClient () {} 类型的方法 onPageStarted(WebView, String) 必须覆盖超类型方法或就地
    • 这可能是因为我在方法签名中的参数错误。查看此链接以获取正确的方法签名:developer.android.com/reference/android/webkit/…, java.lang.String, android.graphics.Bitmap)
    • 现在如果我担心,我做了你列出的所有事情,但我仍然遇到同样的问题:问题是 taq 是 webview 中显示的 url 在模拟器中完美,但是在移动 android 设备中无法正确显示。不显示进度值,仅显示空白栏。那个进步就是 html5 taq
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-04-06
    • 2022-01-03
    • 1970-01-01
    • 1970-01-01
    • 2014-06-26
    • 2020-03-13
    • 2013-11-25
    相关资源
    最近更新 更多