2012-05-04 18 views
5

Estoy en el proceso de crear una actividad donde mostraré la lista del sitio web visitado con su logotipo y su nombre de alias elegido por el usuario.¿Alguna forma de agarrar un ícono de logotipo desde la URL del sitio web, programáticamente?

p. Ej.

  • sitios web recientes Visitado

    logo1 website1/alias de nombre

    logo2 website2/nombre de alias

    .

    . por lo que no

La pregunta es, (Ref. imagen adjunta) Cómo obtener el logotipo página web aparece en el lado izquierdo de http: //?

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

Respuesta

10

Se llama un favicon, y todo lo que tiene que hacer es:

  1. Si hay un icono en /favicon.ico, que utilizan.
  2. De lo contrario, obtenga el contenido de la página y extraiga la ubicación de <link rel="shortcut icon" href="URL goes here" />. Necesitará usar un analizador HTML y buscar el <link> con un rel de icon o shortcut icon.
+0

Muchas gracias por su asesoramiento, voy a implementar y dejarle saber mis conclusiones. -Mejor – mask

+4

Lo tengo trabajando con la ayuda de google url proporcionado para este enfoque. http://www.google.com/s2/favicons?domain=www.domain.com para obtener el favIcon. Todavía luchando con el fondo para hacer transparente como algunos de ellos son con BKG blanco y otro con negro. No estoy seguro de cómo manejar esos fondos dinámicamente. @minitTech Gracias por su ayuda, me ayudó a comenzar. – mask

11

El uso de este sitio web:

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

encontrará todos los logotipos de un sitio web en varios tamaños y devolver una cadena JSON agradable con metadatos que incluye la dirección URL del icono. Simplemente reemplace www.stackoverflow.com con su dominio.

El sitio también cuenta con una interfaz gráfica de usuario para entrar en sitios web de forma manual, si lo prefiere:

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

Aquí es una cadena de muestra de regresar de las consultas a la página web de desbordamiento de pila:

{ 
    "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

Trate de usar este código:

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

Este método puede ser utilizado para obtener Favicon Icono mapa de bits

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