Android WebView getFavicon() 返回 null

Jas*_* Hu 1 java favicon android webview

我正在尝试使用后获取已加载页面的图标

    WebView webView = new WebView(getActivity());
    webView.loadUrl("http://" + url);
Run Code Online (Sandbox Code Playgroud)

我将异步附加WebViewClientWebView加载后获取网站图标

    webView.setWebViewClient(new WebViewClient()
    {
        @Override
        public void onPageFinished(WebView view, String url)
        {
            String linkTitle = view.getTitle();
            Bitmap favicon = view.getFavicon();

            onLinkUrlFinished(url, linkTitle);
        }
    });
Run Code Online (Sandbox Code Playgroud)

返回的 favicon 始终为空,即使对于 google/facebook 等肯定具有 favicon 的网站也是如此。

另一个线程说要使用,WebIconDatabase但已弃用: 显示 Android WebView 的图标

android 站点上的 API 所指的WebViewClient.onReceivedIcon甚至不存在。http://developer.android.com/reference/android/webkit/WebView.html#getFavicon%28%29

这里发生了什么?

Sub*_*rif 5

为了使用onReceiveIcon(),您应该使用setWebChromeClient. 这就是我所做的,它对我有用。

webView.setWebChromeClient(new WebChromeClient() {
        @Override
        public void onProgressChanged(WebView view, int newProgress) {
            super.onProgressChanged(view, newProgress);
            progressBar.setProgress(newProgress);
        }

        @Override
        public void onReceivedIcon(WebView view, Bitmap icon) {
            super.onReceivedIcon(view, icon);
            webImage.setImageBitmap(icon);
        }
    });
Run Code Online (Sandbox Code Playgroud)