2010-04-13 5 views
8

J'essaie de recevoir une image de la galerie Android via une intention ACTION_SEND. J'ai défini les filtres d'intention appropriés et la Galerie ouvre mon application. Maintenant, je veux savoir comment obtenir les données d'image. Je ne trouve aucun exemple sur Internet de la façon dont cela est fait. Je pense que le chemin est quelque part dans intention.getData() mais comment puis-je extraire cette image de la galerie?Réception d'une intention ACTION_SEND de la galerie

Répondre

15

Trouvé dans la source Picasa. Il donne le bon chemin de l'image.

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

Dans quel fichier et où ce fichier doit être placé. –

0

ne suis pas sûr de l'intention SEND, mais lors du retour de de intentions PICK au MediaStore pour une photo, il va quelque chose comme:

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

Attention cependant - vous pouvez travailler avec 5+ fichiers mégapixels , ce qui peut être assez important (surtout si vous les décompressez en bitmaps à traiter), et votre mémoire est assez limitée.