2012-05-04 34 views
5

Tôi đang trong quá trình tạo hoạt động nơi tôi sẽ hiển thị danh sách trang web đã truy cập có biểu tượng và tên bí danh được chọn bởi người dùng.Bất kỳ cách nào để lấy biểu tượng logo từ URL trang web, theo lập trình?

ví dụ:

  • trang web gần đây Visited

    logo1 website1/bí danh tên

    logo2 website2/tên bí danh

    .

    . do đó không có

Câu hỏi đặt ra là, (Đính kèm hình ảnh) Cách nhận biểu tượng trang web hiển thị ở bên trái của http: //?

Like below I want to just grab the icon and save it locally

Trả lời

10

Nó được gọi là favicon, và tất cả các bạn phải làm là:

  1. Nếu có một biểu tượng ở /favicon.ico, sử dụng đó.
  2. Nếu không, hãy lấy nội dung của trang và trích xuất vị trí từ <link rel="shortcut icon" href="URL goes here" />. Bạn sẽ cần phải sử dụng trình phân tích cú pháp HTML và tìm số <link> với rel của icon hoặc shortcut icon.
+0

Cảm ơn bạn đã tư vấn, tôi sẽ triển khai và cho bạn biết những phát hiện của tôi. -Best – mask

+4

Tôi nhận được nó làm việc với sự giúp đỡ của google url cung cấp cho phương pháp này. http://www.google.com/s2/favicons?domain=www.domain.com để lấy favIcon. Vẫn đang vật lộn với nền để làm cho minh bạch như một số trong số đó là với BKG màu trắng và một với màu đen. Không chắc chắn cách xử lý các nền động đó. @minitTech Cảm ơn sự giúp đỡ của bạn, nó giúp tôi bắt đầu. – mask

11

Sử dụng trang web này:

https://besticon-demo.herokuapp.com/allicons.json?url=www.stackoverflow.com

Nó sẽ tìm thấy tất cả các biểu tượng cho một trang web trong nhiều kích cỡ và trả về một chuỗi json tốt đẹp với dữ liệu meta bao gồm url vào biểu tượng. Bạn chỉ cần thay thế www.stackoverflow.com bằng miền của mình.

Trang web cũng có một gui cho nhập vào các trang web bằng tay nếu bạn thích:

https://besticon-demo.herokuapp.com/ 

Dưới đây là một chuỗi mẫu trở về từ truy vấn cho trang web của stack overflow:

{ 
    "url":"www.stackoverflow.com", 
    "icons":[ 
     { 
     "url":"http://stackoverflow.com/apple-touch-icon.png", 
     "width":158, 
     "height":158, 
     "format":"png", 
     "bytes":3445, 
     "error":null, 
     "sha1sum":"c78bd457575a3221c6b3d0d17ffb00ffc63d7cd0" 
     }, 
     { 
     "url":"http://cdn.sstatic.net/Sites/stackoverflow/img/favicon.ico?v=4f32ecc8f43d", 
     "width":32, 
     "height":32, 
     "format":"ico", 
     "bytes":5430, 
     "error":null, 
     "sha1sum":"4f32ecc8f43d0986b9c6ce9f37999e86c0b829ef" 
     }, 
     { 
     "url":"http://stackoverflow.com/favicon.ico", 
     "width":32, 
     "height":32, 
     "format":"ico", 
     "bytes":5430, 
     "error":null, 
     "sha1sum":"4f32ecc8f43d0986b9c6ce9f37999e86c0b829ef" 
     } 
    ] 
} 
1

Hãy thử sử dụng này mã:

imageview1.setImageBitmap(webview1.getFavicon()); 
0

Phương pháp này có thể được sử dụng để lấy Favicon Biểu tượng bitmap

private Bitmap fetchFavicon(Uri uri) { 
     final Uri iconUri = uri.buildUpon().path("favicon.ico").build(); 
     Log.i(TAG, "Fetching favicon from: " + iconUri); 

     InputStream is = null; 
     BufferedInputStream bis = null; 
     try 
     { 
      URLConnection conn = new URL(iconUri.toString()).openConnection(); 
      conn.connect(); 
      is = conn.getInputStream(); 
      bis = new BufferedInputStream(is, 8192); 
      return BitmapFactory.decodeStream(bis); 
     } catch (IOException e) { 
      Log.w(TAG, "Failed to fetch favicon from " + iconUri, e); 
      return null; 
     } 
    } 
Các vấn đề liên quan