2010-08-11 103 views
6

我想顯示我通過android.webkit.WebView訪問的網站的圖標。我嘗試了兩種方法來獲取它:顯示Android WebView的favicon

1)WebViewClient.onPageStarted()方法的favicon參數始終爲空。

2)WebChromeClient.onReceivedIcon()方法永遠不會被調用。

3)在onPageStarted()onPageFinished()onPageFinished()中調用WebView.getFavicon()但它總是返回null。

我一直無法找到一個在線示例,顯示如何訪問favicon。任何提示將不勝感激。

+0

您是否找到解決方案? – znat 2012-05-08 20:45:34

+0

@NathanZ - 是的,馬克的答案似乎有伎倆。 – tronman 2013-06-10 21:51:10

回答

18

要使WebView圖標方法和偵聽器正常工作,您需要先手動打開WebIconDatabase。您通常會在您的活動的onCreate()方法中執行此操作。

嘗試添加以下行onCreate()

WebIconDatabase.getInstance().open(getDir("icons", MODE_PRIVATE).getPath()); 

一旦你做到了這一點,你應該開始越來越onReceivedIcon()回調對該活動的任何網頁視圖,和getFavicon()方法也應該開始返回一個有效的對象而不是在圖標可用時爲空。

+0

與@tronman有同樣的問題。我嘗試了你的建議,在setContentView()之前和之後將此代碼添加到我的onCreate()中。我從來沒有得到任何onReceivedIcon()回調,並且WebView.getFavIcon()始終爲空。所以沒有骰子=( – MightyE 2011-10-04 20:41:36

+0

非常感謝@Mark Slee ...你的解決方案完美地工作... – Zeba 2012-06-19 06:57:40

+0

不錯,請指定'這些函數需要在被調用之前構造一個WebView,並且WebView.getIconDatabase()將返回一個WebIconDatabase對象' – Pascal 2012-12-02 17:29:01

0

我想記住有一種方法getFavicon()可用於WebView對象。這是我嘗試過的那個愚蠢的問題嗎?

+0

是的,我也試過。我已經添加到我原來的帖子來澄清。 – tronman 2010-08-12 15:32:06

+0

你能給你網站的網址,你想獲得favicon從?明天早上我會看看。 – Sephy 2010-08-12 21:51:30

+0

哪個網站無關緊要...我無法訪問任何*網站的圖標。我非常感謝你的幫助。 – tronman 2010-08-13 21:18:44