2010-04-13 20 views
8

Ich versuche, ein Bild von der Android-Galerie über eine ACTION_SEND-Absicht zu erhalten. Ich habe die richtigen Absicht Filter und die Galerie öffnet meine App. Jetzt möchte ich wissen, wie man an die Bilddaten gelangt. Ich kann im Internet keine Beispiele finden, wie das gemacht wird. Ich denke, der Pfad ist irgendwo in intent.getData(), aber wie genau ziehe ich dieses Bild aus der Galerie?Empfangen einer ACTION_SEND-Absicht aus der Galerie

Antwort

15

Gefunden in der Picasa-Quelle. Es gibt den richtigen Pfad des Bildes.

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 welcher Datei und wo in dieser Datei soll diese platziert werden. –

0

Nicht sicher über die SEND Absicht, aber wenn Erträge aus PICK Absichten auf die Mediastor nach einem Foto Handling, geht es so etwas wie:

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

aber vorsichtig sein - Sie können mit 5+ Megapixel-Dateien arbeiten werden , die ziemlich groß sein kann (besonders, wenn Sie sie zu Bitmaps dekomprimieren), und Ihr Speicher ist ziemlich begrenzt.

Verwandte Themen