从Gallery中接收ACTION_SEND意图

我试图通过ACTION_SEND意图从Android图库接收图像。 我已经设置了适当的意图filter,画廊打开我的应用程序。 现在我想知道如何获取图像数据。 在互联网上我找不到任何例子。 我认为这个path是在intent.getData()的某个地方,但是我怎么把这个图像从图库中拉出来呢?

Solutions Collecting From Web of "从Gallery中接收ACTION_SEND意图"

在Picasa源代码中find这个。 它给出了图像的正确path。

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)); 

不确定SEND的意图,但是当处理从PICK意图返回到MediaStore的照片时,它就像这样:

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

不过要小心 – 你可以使用5百万像素的文件,这个文件可能很大(特别是如果你把它们解压到位图进行处理的话),而且你的内存非常有限。