我有一个处理图像文件的活动:
if (Intent.ACTION_VIEW.equals(action) && type != null && type.startsWith("image/")) {
Uri imageUri = i.getData();
try {
Bitmap image = MediaStore.Images.Media.getBitmap(getContentResolver(), imageUri);
} catch (Exception e) {
e.printStackTrace();
}
}
这让我得到了位图中的图像,但是我还需要从中获取 exif 数据。保存图像使用image.compress
删除此数据。
例如,如果我单击View
gmail,则没有可以使用的真实路径,因此我一直在尝试获取 exif 数据。有没有办法获取byte[]
传递给我的活动的数据,或从对象获取 exif 数据Bitmap
?
笔记:
这个:
ExifInterface exifData = new ExifInterface(imageUri.getPath());
不会导致异常,但是我得到所有标签的 null ,如果我尝试打印路径,我会得到:
/my.email@gmail.com/messages/248/attachments/0.1/BEST/false
如果我先点击save
然后view
在 gmail 中,我可以使用上述方法成功检索 exif 数据,并将其传递imageUri.getPath()
给 exif 构造函数。
如果没有办法使view
工作,那么我怎样才能使它只有在将文件保存到磁盘后才提示用户使用我的应用程序?这就是我的意图过滤器现在的样子:
<activity android:name=".GameActivity">
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="image/*" />
</intent-filter>
</activity>