我正在开发简单的节点管理器,用户可以在其中为笔记制作照片。 这是启动相机的按钮的代码:
data = [
{
dataId: 1,
name: test1,
description: 'some desc',
parentId: null
},
{
dataId: 2,
name: test1,
description: 'some desc',
parentId: 2
},
{
dataId: 3,
name: test1,
description: 'some desc',
parentId: 1
},
{
dataId: 4,
name: test1,
description: 'some desc',
parentId: null
}
我以这种方式创建File对象:
final Intent makePhotoIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
PackageManager packageManager = fragment.getActivity().getPackageManager();
Uri uri = FileProvider.getUriForFile(getActivity(), FILE_PROVIDER, mTempPhotoFile);
makePhotoIntent.putExtra(MediaStore.EXTRA_OUTPUT, uri);
List<ResolveInfo> cameraActivities = packageManager
.queryIntentActivities(makePhotoIntent, PackageManager.MATCH_DEFAULT_ONLY);
for (ResolveInfo info : cameraActivities) {
getActivity().grantUriPermission(info.activityInfo.packageName, uri,
Intent.FLAG_GRANT_WRITE_URI_PERMISSION | Intent.FLAG_GRANT_READ_URI_PERMISSION);
}
startActivityForResult(makePhotoIntent, REQUEST_PHOTO);
这是FileProvider配置:
public File getPhotoFile(String fileName) {
File filesDir = context.getFilesDir();
return new File(filesDir, fileName);
}
在制作完照片后,我将其设置为ImageView并正确显示。然后,将照片文件名设置为便笺字段,并使用Room将便笺保存到本地数据库。
但是当我打开保存的注释时,照片不会显示。我从便笺的字段中按名称获取了照片文件,但是file.exists()返回false。
哪里出错了,我无法弄清楚。请帮忙。