2010-04-13 20 views
8

Estoy tratando de recibir una imagen de la Galería Android a través de un intento ACTION_SEND. Configuré los filtros de intención adecuados y la Galería abre mi aplicación. Ahora quiero saber cómo obtener los datos de la imagen. No puedo encontrar ejemplos en Internet de cómo se hace esto. Me imagino que la ruta está en algún lugar en intent.getData(), pero ¿cómo exactamente puedo sacar esa imagen de la galería?Recibo un intento ACTION_SEND de la Galería

Respuesta

15

Encontré esto en la fuente de Picasa. Da el camino correcto de la imagen.

Intent intent = getIntent(); 
    if (Intent.ACTION_SEND.equals(intent.getAction())) { 
     Bundle extras = intent.getExtras(); 
     if (extras.containsKey(Intent.EXTRA_STREAM)) { 
      Uri uri = (Uri) extras.getParcelable(Intent.EXTRA_STREAM); 
      String scheme = uri.getScheme(); 
      if (scheme.equals("content")) { 
       String mimeType = intent.getType(); 
       ContentResolver contentResolver = getContentResolver(); 
       Cursor cursor = contentResolver.query(uri, null, null, null, null); 
       cursor.moveToFirst(); 
       String filePath = cursor.getString(cursor.getColumnIndexOrThrow(Images.Media.DATA)); 
+0

En qué archivo y en qué parte de ese archivo se va a ubicar. –

0

No está seguro acerca de la intención de enviar, pero cuando la gestión de devoluciones de las intenciones selección situada a la MediaStore para una foto, es algo como:

Uri selectedImage = intent.getData(); 
    AssetFileDescriptor fd = getContentResolver() 
      .openAssetFileDescriptor(selectedImage, "r"); 
    FileInputStream s = fd.createInputStream(); 
    // your image data processing code here 

Tenga cuidado sin embargo - usted puede estar trabajando con más de 5 megapíxeles archivos , que puede ser bastante grande (especialmente si los está descomprimiendo en mapas de bits para procesar), y su memoria es bastante limitada.

Cuestiones relacionadas