2010-04-13 17 views
8

Sto tentando di ricevere un'immagine dalla Galleria Android tramite un intento ACTION_SEND. Ho impostato i filtri di intent corretto e Gallery apre la mia app. Ora voglio sapere come ottenere i dati dell'immagine. Non riesco a trovare alcun esempio su Internet di come è fatto. Immagino che il percorso sia da qualche parte in intent.getData() ma in che modo esattamente estraggo quell'immagine dalla galleria?Ricezione di un intento ACTION_SEND dalla Galleria

risposta

15

Trovato nel sorgente Picasa. Dà il percorso corretto dell'immagine.

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

In quale file e dove si trova questo file. –

0

Non sono sicuro circa l'intenzione SEND, ma quando si maneggiano i rendimenti da intenti PICK al MediaStore per una foto, è più o meno così:

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

Attenzione però - si può lavorare con i file 5+ megapixel , che può essere abbastanza grande (specialmente se non li si comprime in bitmap da elaborare) e la memoria è piuttosto limitata.

Problemi correlati