java你能从Android上的照片应用程序内容提供商那里获得原始图像文件吗?
我正在玩一个应用程序,其中有一个按钮可以从图库中选择图像。然后,它继续查看这些图像中的EXIF数据,以进行额外处理
在成功读取EXIF数据的情况下,以下场景正常工作:
- 将谷歌照片应用程序中的照片共享到此应用程序李>
- 使用如下代码,从本地存储中打开一张照片李>
- 使用如下代码,打开存储在Google Drive上的照片李>
但不起作用的是,使用该代码打开谷歌照片应用程序提供的图像文件
图像本身显示正确,但缺少EXIF标记。请注意,从照片到我的应用程序的共享确实有效,并且在我可以看到的照片应用程序中没有打开任何编辑设置
我想知道是否有人碰到过这个问题,是否有解决办法
package com.example.somepackage;
import 安卓.app.Activity;
import 安卓.content.Intent;
import 安卓.net.Uri;
import java.io.InputStream;
import 安卓x.annotation.Nullable;
import 安卓x.exifinterface.media.ExifInterface;
import 安卓x.fragment.app.Fragment;
// snippet pieced together from working code
public class SomeFragment extends Fragment {
private static final int REQUEST_PICK_FROM_GALLERY = 100;
// ............
// Called from an event handler
public void pickFromGallery() {
Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.setType("image/*");
startActivityForResult(intent, REQUEST_PICK_FROM_GALLERY);
}
@Override
public void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
switch (requestCode) {
case REQUEST_PICK_FROM_GALLERY:
if (resultCode == Activity.RESULT_OK) {
Uri uri = data.getData();
readExifData(uri);
}
break;
}
super.onActivityResult(requestCode, resultCode, data);
}
private void readExifData(Uri uri) {
try (InputStream is = getContext().getContentResolver().openInputStream(uri)) {
ExifInterface exif = new ExifInterface(is);
// Do something useful.
安卓.util.Log.w("Test", "Camera make: " + exif.getAttribute(ExifInterface.TAG_MAKE));
} catch (Exception ex) {
ex.printStackTrace();
}
}
}
共 (0) 个答案