从图库中接收ACTION_SEND意图
问题描述:
我试图通过ACTION_SEND意图从Android图库接收图像。我已经设置了适当的意图过滤器,画廊打开我的应用程序。现在我想知道如何获取图像数据。我无法在互联网上找到任何这样做的例子。我认为路径在intent.getData()中的某处,但是我怎样才能从画廊中拉出该图像?从图库中接收ACTION_SEND意图
答
在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));
答
不能确定SEND意图,但处理来自PICK意图的MediaStore相片返回时,它会是这样的:
Uri selectedImage = intent.getData();
AssetFileDescriptor fd = getContentResolver()
.openAssetFileDescriptor(selectedImage, "r");
FileInputStream s = fd.createInputStream();
// your image data processing code here
不过要小心 - 你可以用5+万像素的文件中工作,它可能相当大(特别是如果你将它们解压缩为位图来处理),并且你的内存非常有限。
在哪个文件中以及该文件的位置是要放置的。 – 2015-04-08 10:17:43