2010-09-10 11 views
9

Me gustaría hacer que ImageView muestre una imagen en un sitio web. Así que creo un nuevo ImageView y ejecuto imgView.setImageURI(uri);error de mapa de bits erróneo al configurar Uri

Cuando lance la aplicación, la imagen no aparece y aparece el error, "resolveUri falló en el mal Bitmap Uri (uri)".

¿Alguna idea sobre cómo solucionar esto?

Respuesta

17

Si no es un URI de contenido, this link puede ayudar. Parece indicar que imgView.setImageURI() no se debe utilizar para URI regulares. Copia en el bit correspondiente:

Sí, ImageView.setImageURI(ContentURI uri) obras, pero es por el contenido de los URI en particular a la plataforma Android, no URIs que especifican los recursos de Internet. La convención se aplica a objetos binarios (imágenes, por ejemplo) que no pueden exponerse directamente a través de los métodos del Cursor de un proveedor de contenido. En su lugar, se utiliza una referencia de cadena para hacer referencia a un URI de contenido distinto, que se puede resolver mediante una consulta separada contra el proveedor de contenido. El método setImageURI es simplemente un contenedor para realizar esos pasos por usted.

He probado este uso de setImageView, y funciona como se esperaba. Para su uso, sin embargo, miraría BitmapFactory.decodeStream() y URL.openStream().

también a hacer que esta respuesta en sí misma, el código de ejemplo de otro puesto en ese enlace, que muestra cómo hacerlo:

private Bitmap getImageBitmap(String url) { 
    Bitmap bm = null; 
    try { 
     URL aURL = new URL(url); 
     URLConnection conn = aURL.openConnection(); 
     conn.connect(); 
     InputStream is = conn.getInputStream(); 
     BufferedInputStream bis = new BufferedInputStream(is); 
     bm = BitmapFactory.decodeStream(bis); 
     bis.close(); 
     is.close(); 
    } catch (IOException e) { 
     Log.e(TAG, "Error getting bitmap", e); 
    } 
    return bm; 
} 

No he probado este código, sólo soy paranoico y me gusta asegurar que las respuestas SO sean útiles incluso si cualquier otro sitio en la red desaparece :-)

0

Primero, debe descargar la imagen y guardarla en su device(sdcard or memory). A continuación, obtenga su ruta de archivo, usando Uri.parse(filePath) para convertir la ruta a uri finalmente, llame al ImageView's setImageURI(Uri) para completar. - Lo uso de esta manera para lograr mi propósito y hay un error: si la imagen es demasiado grande (tal vez exceder 1Mb o menos, puede informar OutOfMemeroy Exception !!!)

Cuestiones relacionadas