【发布时间】:2018-11-20 14:11:54
【问题描述】:
在我的应用中,尝试使用相机应用捕捉图像。 我正在更新我的应用程序以在指定将图像保存到的文件路径时使用 FileProvider.getUriForFile,因为不推荐使用 Uri.fromFile。
使用 Uri.fromFile 之前运行良好。但我无法使用 FileProvider.getUriForFile 让它工作。
我正在按如下方式创建图像文件:
String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date());
String imageFileName = "JPEG_" + timeStamp + "_";
File storageDir = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES);
File image = File.createTempFile(
imageFileName, /* prefix */
".jpg", /* suffix */
storageDir /* directory */
);
mCurrentPhotoPath = "file:" + image.getAbsolutePath();
return image;
然后,根据目标 sdk,我得到图像 URI:
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) {
jobImageURI = Uri.fromFile(photoFile);
} else {
jobImageURI = FileProvider.getUriForFile(OrderDetails.this, BuildConfig.APPLICATION_ID + ".provider",photoFile);
}
根据 android 开发人员文档,我已更新应用清单 xml 以包含提供程序。 我有一个包含路径的 provider_paths.xml 文件:
<?xml version="1.0" encoding="utf-8"?>
<paths xmlns:android="http://schemas.android.com/apk/res/android">
<external-path name="external_files" path="."/>
</paths>
然后我启动相机:
takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, jobImageURI);
startActivityForResult(takePictureIntent, CAPTURE_IMAGE_ACTIVITY_REQUEST_CODE);
但是,在拍摄照片并返回 onActivityResult 函数后,我读回了图像文件。 图像未保存到图库中,因为我正在从图库中读取最后一个文件,但它不存在。 我也无法使用上述 jobImageURI 中的路径访问该文件。
是否我提供的 provider_paths.xml 文件的路径不正确,或者为什么我无法访问图像?
【问题讨论】:
-
在 xml 中提供路径代替点 (.)。
-
别忘了在AndroidManifest.xml中注册provider
-
谢谢阿尼鲁德。我怎么知道路径是什么?我已经在 AndroidManifest.xml 中注册了提供程序: