2010-06-01 14 views
6

Tengo la url de una imagen. Lo que necesito hacer es lanzar el visor de imágenes predeterminado para las imágenes usando un intento.Iniciar visor de intención para mostrar la imagen desde la url

he intentado poner en marcha mediante el uso de:

Uri uri = Uri.parse("http://www.google.com/intl/en_ALL/images/srpr/logo1w.png"); 
Intent it = new Intent(Intent.ACTION_VIEW); 
it.setDataAndType(uri, "image/*") 
startActivity(it); 

Pero no funciona. Si no especifico el tipo de datos, el intento inicia el navegador ya que los datos son una url. Funciona básicamente (ya que puede ver la imagen en el navegador) pero lo que me gustaría es que la galería muestre la imagen para mí.

También puedo descargar la imagen en un mapa de bits pero aún no sabría cómo mostrar el mapa de bits usando la galería (si eso es posible). ¿Algunas ideas?

EDIT: Intenté guardar el mapa de bits en la memoria caché y luego iniciar el visor en ese archivo, pero no funciona. ¿Puedes detectar cualquier error en mi código? (La clase Utilities es una clase que escribí El método simplemente crea el mapa de bits Funciona, ese no es el problema..)

File temp = File.createTempFile("tempImage", ".jpg", getContext().getCacheDir()); 
Bitmap bmp = Utilities.loadBitmap(largeUrl.toString()); 
BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream(temp)); 
bmp.compress(Bitmap.CompressFormat.JPEG, 90, out); 
out.close(); 
Intent intent = new Intent(); 
intent.setAction(android.content.Intent.ACTION_VIEW); 
intent.setDataAndType(Uri.fromFile(temp), "image/jpg"); 
((Activity) getContext()).startActivity(intent); 

EDIT 2: decidí que puedo necesitar las imágenes descargadas después de todo, así que decidió guardarlos primero en la tarjeta sd. Eso creó otros problemas. Pedí un new question para eso ya que es un problema diferente.

Respuesta

1

Quizás la galería requiera que la imagen se guarde en la memoria.

¿Por qué no descargar la imagen en un mapa de bits y luego guardarla como un archivo, luego disparar la intención de la imagen en ese archivo?

(Si no desea que el archivo a quedarse después, usted podría simplemente guardarlo en el directorio de datos de la aplicación)

+1

Me gustaría ser capaz de hacerlo sin guardar cosas, pero he intentado y no funciona ¿Puedes echar un vistazo a mi pregunta editada y detectar errores? –

+0

Dos comentarios: (1) Usted establece setDataAndType en el archivo temporal, antes de que se haya emitido. ¿Por qué no recuperar el archivo guardado y luego agregarlo a la intención? (2) Cuando dice "no funciona", ¿cuál es el resultado o la excepción? – HXCaine

+0

¿qué quieres decir con eso antes de que se haya emitido? Comprimo el mapa de bits, cierro el flujo de salida y luego creo el intento ... –

1

Su código está bien pero hay que guardar la imagen en la tarjeta SD (" temp "Archivo" para que el visor de fotos funcione. Probado en 1.5, 1.6, 2.1.

0

Puede probar este código para onItemClickListner GridView para mostrar en la galería por defecto App

OnItemClickListener myOnItemClickListener = new OnItemClickListener() { 

    @Override 
    public void onItemClick(AdapterView<?> parent, View view, int position, 

     Intent it = new Intent(Intent.ACTION_VIEW); 
     it.setDataAndType(Uri.parse("file://" + (String) parent.getItemAtPosition(position)), "image/*"); 
     startActivity(it); 
    } 
}; 

este es un trabajo para mí :)

Cuestiones relacionadas