java.lang.SecurityException: Permission Denial: reading com.android.providers.media.MediaProvider
发布网友
发布时间:2022-04-25 15:29
我来回答
共1个回答
热心网友
时间:2023-10-13 00:13
这个错误可以参考如下内容:
ContentProvider【java.lang.SecurityException: Permission Denial】异常解决
2017年08月30日 17:40:42
阅读数:2175
今天在使用ContentProvider过程中遇到 一个异常,在网上找了各种方法,但都不是我这个异常的解决方案,于是我搜啊搜,终于看到:http://m.blog.csdn.net/OREO_GO/article/details/52295099 完美解决了我的问题。
我的手机是小米note,版本是7.0以上
异常
Caused by: java.lang.SecurityException: Permission Denial:
opening provider com.android.providers.contacts.ContactsProvider2
from ProcessRecord{8e31224 29224:activity.gudd.com.review/u0a212}
(pid=29224, uid=10212)
requires android.permission.READ_CONTACTS or android.permission.WRITE_CONTACTS
这个哥们呢说:
在SDK23也就是Android6.0.1里编写调用系统通讯录读写权限的程序,在AndroidManifest.xml中,已经配置了
<uses-permission android:name="android.permission.READ_CONTACTS"/><uses-permission android:name="android.permission.WRITE_CONTACTS"/>
但还是遇到了上面的异常。
原因是SDK23对应用程序权限做出了改动,有两种解决办法:
1.使用SDK22开发,并且运行此程序的android虚拟机或者是手机系统6.0以下。
2.使用ContentResolver之前,输入如下代码,进行权限校验。
首先进行REQUESTCODE: REQUEST_CODE_ASK_PERMISSIONS常量声明。
解决办法:
在使用ContentResolver之前,加入如下代码。
在开始前声明常量
final private int REQUEST_CODE_ASK_PERMISSIONS = 123;
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.M) {int hasWriteContactsPermission = checkSelfPermission(Manifest.permission.READ_CONTACTS);if (hasWriteContactsPermission != PackageManager.PERMISSION_GRANTED){requestPermissions(new String[]{Manifest.permission.WRITE_CONTACTS},REQUEST_CODE_ASK_PERMISSIONS);return;}}
的确,我的问题解决了,并且提示出了是否让我读取联系人的对话框。