我的应用程序允许用户查看图库或其他位置中的某些选定图像。我请求通过URI的图像:重新启动后图库中的图像权限丢失
Intent photoPickerIntent = new Intent(Intent.ACTION_PICK);
photoPickerIntent.setType("image/*");
startActivityForResult(photoPickerIntent, PickerFragment.PICK_PHOTO);
然后得到URI在onActivityResult(INT requestCode,INT resultCode为,意图数据),并有机会获得这些图像把它们放在我的应用程序的意见通过:
Uri imageUri= data.getData();
当应用程序完成后,我保存所有的URI在我的数据库通过字符串:
String imageUriString = imageUri.toString();
saveToDB (imageUriString);
然而,当我重新启动应用程序,并从我的DAT恢复所有的URI通过:
String imageUriString = restoreFromDB();
imageUri = Uri.parse (imageUriString);
该应用程序没有权限的那些Uri的在Android 7.1中。 我通过访问图片:
ContentResolver cr = mContext.getContentResolver();
InputStream is = cr.openInputStream(imageUri);
BitmapFactory.decodeStream(is, null, o);
但收到此异常:
java.lang.SecurityException: Permission Denial: opening provider com.google.android.apps.photos.contentprovider.impl.MediaContentProvider from ProcessRecord
有一种优雅的和合法的方式来保持该权限? 我试图阅读关于权限的所有文档,但感觉真的很困惑。
如果你让我正确的学习方向,将不胜感激。
PS Uri的权限持续时,将图像复制到应用程序内存是一种选择,但我想避免这种情况。至少看看是否有可能。
PPS我已授予所有权限,例如相机和外部存储器写入和读取。
检查时图像不存在此链接https://stackoverflow.com/questions/37409181/java-lang-securityexception-permission-denial-opening-provider – Anonymous
店字节组而不是uri.Uri失败在画廊。 – Anonymous
@匿名,存储是一个选项,但不是理想的。在我的情况下,即使图像存在于图库中,Uri也会失败 – rommex