2010-08-11 8 views
6

Tôi muốn hiển thị hình đại diện của trang web mà tôi đang truy cập qua android.webkit.WebView. Tôi đã thử hai cách để có được nó:Hiển thị favicon của Android WebView

1) WebViewClient.onPageStarted() phương pháp có tham số favicon luôn rỗng.

2) WebChromeClient.onReceivedIcon() phương pháp không bao giờ được gọi.

3) Được gọi là WebView.getFavicon() trong onPageStarted()onPageFinished() nhưng nó luôn trả về giá trị rỗng.

Tôi chưa thể tìm thấy ví dụ trực tuyến cho biết cách truy cập favicon. Bất kì gợi ý sẽ được đánh giá rất cao.

+0

Bạn đã tìm thấy giải pháp chưa? – znat

+0

@NathanZ - vâng, câu trả lời của Mark dường như làm điều này. – tronman

Trả lời

18

Để các phương thức biểu tượng WebView và trình lắng nghe hoạt động, trước tiên bạn cần mở WebIconDatabase theo cách thủ công. Bạn thường làm điều này trong phương thức onCreate() của Hoạt động của bạn.

Hãy thử thêm dòng sau vào onCreate():

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

Một khi bạn đã làm điều này, bạn nên bắt đầu nhận onReceivedIcon() callbacks cho bất kỳ WebView trong Hoạt động này, và phương pháp getFavicon() cũng nên bắt đầu trả về một đối tượng hợp lệ thay vì null bất cứ khi nào các biểu tượng có sẵn.

+0

Có cùng vấn đề với @tronman. Tôi đã thử đề xuất của bạn, thêm mã này vào onCreate() của tôi cả trước và sau setContentView(). Tôi không bao giờ nhận được bất kỳ callbacks onReceivedIcon(), và WebView.getFavIcon() luôn luôn là null. Vì vậy, không có con xúc xắc = ( – MightyE

+0

Cảm ơn rất nhiều @Mark Slee ... giải pháp của bạn hoạt động hoàn hảo ... – Zeba

+0

Rất vui lòng chỉ định rằng 'Các hàm này yêu cầu một WebView được xây dựng trước khi được gọi và WebView.getIconDatabase() sẽ trả về Đối tượng WebIconDatabase ' – Pascal

0

Tôi nghĩ rằng hãy nhớ rằng có một phương thức getFavicon() có sẵn cho đối tượng WebView. đây là câu hỏi ngu ngốc của tôi bạn đã thử?

+0

Vâng, tôi cũng đã thử điều đó. Tôi đã thêm điều đó vào bài đăng gốc của mình để làm rõ. – tronman

+0

bạn có thể cung cấp url của trang web bạn muốn nhận favicon từ đó không? Tôi sẽ có một cái nhìn vào buổi sáng ngày mai. – Sephy

+0

Không quan trọng trang web nào ... Tôi không thể truy cập vào favicon cho trang web * any *. Tôi đánh giá cao sự giúp đỡ của bạn. – tronman