当前位置: 首页 > 知识库问答 >
问题:

重新启动后,库中图像的权限丢失

袁羽
2023-03-14

我的应用程序允许用户查看一些从画廊或其他位置选择的图像。我通过以下方式请求图像的URI:

Intent photoPickerIntent = new Intent(Intent.ACTION_PICK);
photoPickerIntent.setType("image/*");
startActivityForResult(photoPickerIntent, PickerFragment.PICK_PHOTO);

然后获取onActivityResult(int requestCode,int resultCode,Intent data)中的URI,并访问这些图像,将它们放到我的应用程序的视图中,方法是:

Uri imageUri= data.getData();

当应用程序完成时,我通过以下方式将所有URI保存为字符串:

String imageUriString = imageUri.toString();
saveToDB (imageUriString);
String imageUriString = restoreFromDB ();
imageUri = Uri.parse (imageUriString);

在Android7.1中,该应用程序不再拥有这些URI的权限。我通过以下方式访问图像:

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

有没有一种优雅而合法的方式来保持这种许可?我试着看了所有关于权限的文件,但感觉真的很困惑。

PPS我有所有的权限授予,像相机和外部存储写和读。

共有1个答案

梁丘高朗
2023-03-14

因此,在@greenapps的大力帮助下,在模拟器和实际设备上进行测试后,解决方案如下:

>

  • 使用其他意图:

    Intent photoPickerIntent=新的意图(Intent.action_open_document);

  •  类似资料:
    • logcat给我这个错误: 当我将应用程序从eclipse部署到emulator时,它工作正常。当我关闭应用程序并尝试再次运行时,出现问题,然后我收到消息: 这是我的舱单。xml 有人能检查一下出了什么问题吗? 谢谢

    • 我在AWS中有一个简单的t2实例,我必须更改RDS DB实例运行的默认时区;由于没有反映任何更改,我决定重新启动RDS实例。 一旦发生这种情况,运行我的的EC2实例开始失败,应用程序返回一个错误,试图连接到数据库。 我还决定重新启动EC2实例(我是AWS的新手)。 在此之后,我无法访问我的webapp,所以我继续通过SSH和连接到EC2实例。 几分钟后,我注意到webapp无法工作,并在一个空白页

    • 问题内容: 是否可以重新启动用作动画GIF ? 考虑以下HTML: 而这种风格: 我想在动画播放每次我的类添加时间到,不只是第一次。 我希望这可以工作: 问题在于,一旦Firefox和WebKit浏览器播放一次,它们就不会再次播放背景图像GIF动画。添加/删除班级眨眼仅在第一次时有效。 问题答案: 您可以通过重新加载动画来重播gif。这对于带宽来说并不是理想的选择,尤其是在您的图像较大的情况下,但

    • 问题内容: 我在PHPMyAdmin中更改了我的 ‘root’@’localhost’ 帐户的密码,并且喜欢(此人在这里询问),并将自己锁定在浏览器中的PHPMyAdmin之外。我正在使用WAMP 2.5。 针对该问题提供的解决方案对我不起作用,因为不幸的是,我丢失了重新分配给 root用户 的密码。 一些解决方案要求人们通过命令行(包括此源)来重置密码,而我已经尝试通过Windows命令行来成功

    • 我有一个Spring Boot(1.5.17)Web应用程序,其Tomcat JDBC连接池(8.5.34)配置如下: 现在,如果我重新启动数据库服务器(SQL server),我会得到exception,连接池未恢复。 那么我做错了什么?

    • 我目前正在开发一个Android应用程序,其中用户拍摄存储在设备上的外部内存中的照片,然后我试图也让画廊扫描文件以将新媒体添加到画廊,但这似乎不会更新,直到设备重新启动。 我使用的代码如下: 用我的应用程序拍照后,我可以使用设备上的文件管理器应用程序来验证它是否存在,并记录文件路径,看起来是正确的,然后将其传递给媒体扫描仪 谢谢艾伦