2010-04-13 83 views
8

我試圖通過ACTION_SEND意圖從Android圖庫接收圖像。我已經設置了適當的意圖過濾器,畫廊打開我的應用程序。現在我想知道如何獲取圖像數據。我無法在互聯網上找到任何這樣做的例子。我認爲路徑在intent.getData()中的某處,但是我怎樣才能從畫廊中拉出該圖像?從圖庫中接收ACTION_SEND意圖

回答

15

在Picasa源代碼中找到它。它給出了圖像的正確路徑。

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

在哪個文件中以及該文件的位置是要放置的。 – 2015-04-08 10:17:43

0

不能確定SEND意圖,但處理來自PICK意圖的MediaStore相片返回時,它會是這樣的:

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

不過要小心 - 你可以用5+萬像素的文件中工作,它可能相當大(特別是如果你將它們解壓縮爲位圖來處理),並且你的內存非常有限。