【发布时间】:2012-08-13 06:28:53
【问题描述】:
我有一个处理图像文件的 Activity:
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 保存图像会删除此数据。
例如,如果我在 gmail 中单击 View,则没有可以使用的真实路径,因此我一直在尝试获取 exif 数据。有没有办法获取传递给我的活动的数据的byte[],或从Bitmap 对象获取exif 数据?
注意:
这个:
ExifInterface exifData = new ExifInterface(imageUri.getPath());
不会导致异常,但是我得到所有标签的 null,如果我尝试打印路径,我会得到:
/my.email@gmail.com/messages/248/attachments/0.1/BEST/false
如果我先在gmail中点击save然后view,我可以通过上述方法成功检索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>
【问题讨论】: