【发布时间】:2017-12-12 21:08:23
【问题描述】:
在 Android Nougat 及以上版本中,从相机意图捕获图像的方法已更改,以下代码对我来说工作正常。
Intent camera = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
// File file = new File(AppGlobal.URI_CAPTURED_IMAGE.getPath());
AppGlobal.URI_CAPTURED_IMAGE = FileProvider.getUriForFile(parent, context.getPackageName() + ".provider", AppGlobal.getOutputMediaFile());
}
else
{
AppGlobal.URI_CAPTURED_IMAGE = Uri.fromFile(AppGlobal.getOutputMediaFile());
}
camera.putExtra(MediaStore.EXTRA_OUTPUT, AppGlobal.URI_CAPTURED_IMAGE);
camera.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
startActivityForResult(camera, WritePostFragment.REQUEST_CODE_PHOTO_CAPTURE);
在 onActivityResult 方法中,我也可以在 ImageViews 中显示捕获的图像。
Glide.with(parent).load(AppGlobal.URI_CAPTURED_IMAGE).centerCrop().into(profilePic_iv);
但是当我使用相同的 uri 来获取文件时,它会说在给定的路径中不存在文件。可能是什么问题?我如何解析 Uri 以获取文件。好像是版本相关的东西。
示例uri如下:
content://com.example.demo.provider/external_files/Camera/IMG_20171213_015646.jpg
【问题讨论】:
标签: android android-7.0-nougat