- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
突然之间,我开始从运行 android 4.3 及更高版本的设备中收到以下异常
java.lang.SecurityException: Permission Denial: opening provider com.google.android.apps.photos.content.GooglePhotosImageProvider from ProcessRecord{454ca9d0 5914:com.propertymanager/u0a10231} (pid=5914, uid=10231) requires com.google.android.apps.photos.permission.GOOGLE_PHOTOS or com.google.android.apps.photos.permission.GOOGLE_PHOTOS
at android.os.Parcel.readException(Parcel.java:1431)
at android.os.Parcel.readException(Parcel.java:1385)
at android.app.ActivityManagerProxy.getContentProvider(ActivityManagerNative.java:2896)
at android.app.ActivityThread.acquireProvider(ActivityThread.java:4755)
at android.app.ContextImpl$ApplicationContentResolver.acquireUnstableProvider(ContextImpl.java:2480)
at android.content.ContentResolver.acquireUnstableProvider(ContentResolver.java:1152)
at android.content.ContentResolver.openTypedAssetFileDescriptor(ContentResolver.java:759)
at android.content.ContentResolver.openAssetFileDescriptor(ContentResolver.java:665)
at android.content.ContentResolver.openInputStream(ContentResolver.java:500)
at com.myapp.xxxx.determineCorrectScale(SourceFile:148)
我的导致它的代码是
public static int determineCorrectScale(Context con, Uri imagUri) {
int scale = 1;
InputStream imageStream = null;
imageStream = con.getContentResolver().openInputStream(imagUri);
.
.
.
}
有什么帮助吗??
编辑:这就是我在调用上述方法之前让用户选择图片的方式
Intent choosePictureIntent = new Intent(Intent.ACTION_PICK, Images.Media.INTERNAL_CONTENT_URI);
tartActivityForResult(choosePictureIntent, REQUEST_CHOOSE_IMAGE);
这是 OnActivityResult:
protected void onActivityResult(int requestCode, int resultCode, Intent intent) {
super.onActivityResult(requestCode, resultCode, intent);
if (resultCode == RESULT_OK) {
switch (requestCode) {
case REQUEST_CHOOSE_IMAGE:
Uri selectedImage = intent.getData();
try {
int scale = CommonFunc.determineCorrectScale(this, selectedImage);
最佳答案
虽然添加权限适用于该特定内容提供者,但如果您的数据由其他内容提供者提供,则该权限将不起作用(在 Android 上,除非您明确访问该内容,否则无法保证您会通过特定内容提供者获取数据提供者)。
这个问题的“最终”解决方案可以在这里找到:
Getting access with temporary permissions
You can access data in a content provider, even if you don't have the proper access permissions, by sending an intent to an application that does have the permissions and receiving back a result intent containing "URI" permissions. These are permissions for a specific content URI that last until the activity that receives them is finished.
http://developer.android.com/guide/topics/providers/content-provider-basics.html
从 4.3 版开始,Android 会检查接收的 Activity 是否仍在运行,如果没有则抛出 SecurityException。 determineCorrectScale 是一个静态方法,所以我认为它至少有时会在 Activity 生命周期之外调用。要一劳永逸地解决这个问题,您需要在 Activity 运行时从内容提供者检索数据。我不知道您的应用程序的要求,但如果不涉及繁重的工作(例如从内容提供商复制图像),那么只需在 ui 线程上执行。如果需要繁重的工作,则使用由 Activity 启动的 AsyncTask,但您必须确保 Activity 在检索数据之前没有完成(这可能很棘手)。
我不只是添加那个答案,因为我认为它是正确的,而是因为其他开发人员可能不知道 4.3/4.4 中引入的这一更改,并且可能会遇到与其他内容提供商相同的问题。
关于android - java.lang.SecurityException : Permission Denial: opening provider com. google.android.apps.photos.content.GooglePhotosImageProvider,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21082708/
我从 ssh 收到以下错误: Permissions 0777 for '/Users/username/.ssh/id_rsa' are too open. It is recommended th
我正在使用 WSL1(Windows Linux 子系统)和 Ubuntu 20.04.1 LTS 开发 Win10。我有一个 Samba (1.0) 网络共享,我想通过我的 Ubuntu 终端在上面
文件权限 我有一个文件 data.tgz我想解压缩。 -rw-r--r-- 1 username group 20342951248 mai 18 11:50 data.tgz 目录权限 文件所在的目
我正在尝试设置一些其他组不应该看到的组维护文件夹。目前,我通过取消单击@@sharing 选项卡中的“从更高级别继承权限”复选框来实现这一点,但我想自动执行此操作。 我在文档或谷歌搜索中找不到任何关于
在 Android 4 下,以下简单的 native C 代码行失败并出现 Permission denied 错误 when not run as 根: online_socket = socket
(我是 tortoise SVN 的新手) 我的乌龟 SVN 中有 2 个文件夹。每个人都需要一组不同的授权(我不想有权访问第一个文件夹的人对第二个文件夹具有读/写访问权限。 我怎样才能完成它?我注意
我用 tar -zxvf tarFile.tar.gz解压tarFile,但有错误提示tar: subfile :Cannot open: Permission denied . 我是root用户,权
我是 WAMP 的新手我今天刚刚安装了它。 设置进行得很顺利,本地主机似乎可以工作,但是当我尝试访问 phpMyAdmin 时我收到此错误: Forbidden You don't have perm
我想做的是从文件夹内的文件夹中获取 .mp3 文件。多次。 一切都很完美,除了当我尝试将文件复制到新文件夹(已经存在)时,它给出:[Errno 13]权限被拒绝: import os, shutil
我是 WAMP 的新手我今天刚刚安装了它。 设置进行得很顺利,本地主机似乎可以工作,但是当我尝试访问 phpMyAdmin 时我收到此错误: Forbidden You don't have perm
我正在开发一个应用程序,我在其中使用塔位置跟踪位置。所以我使用地理定位 api 来跟踪位置并访问手机状态以获取网络详细信息。 这很好用,突然间它开始给出 LOCATION_HARDWARE 权限的安全
这两种语法有什么区别。android:uses-permission 和 uses-permission。例如: 当我创建一个从存储中读取的 Activity 时,Android Studio 自
我正在尝试使用新的 GrantPermissionRule这是最新支持库的一部分。 在我的 list 中,我声明如下: 在我的代码中,我调用: @Rule public GrantPermissio
有没有navigator.permissions.query 的替代方案 Permissions API 查询以检查 geolocation 权限。导致它仍处于工作草案中并且浏览器兼容性较差。 W3C
这个错误真的真的很奇怪,我不知道如何重现它以及如何修复它,因为我进行了大量搜索,但没有任何用处。 这是堆栈跟踪: Stack Trace _______________________________
我正在尝试在 ubuntu 16.4 上安装 MaryTTS。 但是当我上线时 sudo -u mary git clone https://github.com/marytts/marytts.gi
在我们基于 Symfony2 的应用程序中,我们希望创建一个列表,列出系统中哪些用户对给定域对象具有权限。我们正在使用 ACL,我们的直接直觉是查看从相关域对象的 ACLProvider 返回的 AC
我今天收到这封邮件,但我没有使用 Admob 广告,而是使用 applovin 和 Facebook,我必须添加此权限还是仅适用于他们使用 Admob 的开发者? 即使没有像我一样的admob,每个人
我有一个 Jenkins 用户,我想授予其对 Jenkins 实例运行远程 CLI 的权限。第一个命令是获取 config.xml: java -jar jenkins-cli.jar -s http
我今天收到这封邮件,但我没有使用 Admob 广告,而是使用 applovin 和 Facebook,我必须添加此权限还是仅适用于他们使用 Admob 的开发者? 即使没有像我一样的admob,每个人
我是一名优秀的程序员,十分优秀!