Permission Denial: opening provider com.ang.providertest.BookProvider from ProcessRecord
前言
今天学习ContentProvider,写Demo的测试时候,即:一个app(应用 A) 获取另一个app(应用B)的ContentProvide中提供的数据时,闪退,错误信息如下:
Caused by: java.lang.SecurityException: Permission Denial: opening provider com.ang.providertest.BookProvider from ProcessRecord{26ea4fd8 21726:com.ang.demo/u0a129} (pid=21726, uid=10129) requires com.ang.PROVIDER_PERMISSION or com.ang.PROVIDER_PERMISSION
at android.os.Parcel.readException(Parcel.java:1465)
at android.os.Parcel.readException(Parcel.java:1419)
at android.app.ActivityManagerProxy.getContentProvider(ActivityManagerNative.java:2848)
at android.app.ActivityThread.acquireProvider(ActivityThread.java:4439)
at android.app.ContextImpl$ApplicationContentResolver.acquireProvider(ContextImpl.java:2199)
at android.content.ContentResolver.acquireProvider(ContentResolver.java:1378)
at android.content.ContentResolver.insert(ContentResolver.java:1184)
at com.ang.chapter_2.provider.ProviderActivity.onCreate(ProviderActivity.java:34)
at android.app.Activity.performCreate(Activity.java:5231)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2188)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2273)
at android.app.ActivityThread.access$800(ActivityThread.java:138)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1236)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:149)
at android.app.ActivityThread.main(ActivityThread.java:5045)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:794)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:610)
at dalvik.system.NativeStart.main(Native Method)
错误原因:
报错app没有权限访问另一个app中的ContentProvider提供的数据
解决办法:
1,需要在应用B的清单文件(AndroidManifest)中的provider添加 android:exported="true" 属性;如果还未解决请看2
<providerandroid:name=".BookProvider"android:authorities="com.ang.providertest"android:permission="com.ang.PROVIDER_PERMISSION"android:exported="true" />
2,如果应用B的清单文中注册的provider中有android:permission属性,检查此权限在应用B中否声明过。声明过后,需要在获取此ContentProvider数据的app(应用A)中也要声明此权限<uses-permission android:name="com.ang.PROVIDER_PERMISSION" /> ;这里涉及到的其实是自定义权限的问题
注意:应用A和应用B中的权限声明是有的区别;如下是应用B的清单文件
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"package="com.ang.providertest">//声明权限 需要两步 1,2<permission android:name="com.ang.PROVIDER_PERMISSION" /> // 1<applicationandroid:allowBackup="true"android:icon="@mipmap/ic_launcher"android:label="@string/app_name"android:roundIcon="@mipmap/ic_launcher_round"android:supportsRtl="true"android:theme="@style/AppTheme"><activity android:name=".MainActivity"><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter></activity><!--android:permission="com.ang.PROVIDER_PERMISSION"--><providerandroid:name=".BookProvider"android:authorities="com.ang.providertest"android:permission="com.ang.PROVIDER_PERMISSION" // 2android:exported="true" /></application></manifest>
Permission Denial: opening provider com.ang.providertest.BookProvider from ProcessRecord相关推荐
- java.lang.SecurityException Permission Denial opening provider ngyb.createdatabase.AccountProvider
java.lang.SecurityException: Permission Denial: opening provider ngyb.createdatabase.AccountProvider ...
- 解决 java.lang.SecurityException: Permission Denial: opening provider com.android.providers.contacts报错
java.lang.SecurityException: Permission Denial: opening provider com.android.providers.contacts.Cont ...
- java.lang.SecurityException: Permission Denial:错误解决办法
在SDK23也就是Android6.0.1里编写调用系统通讯录读写权限的程序,在AndroidManifest.xml中,已经配置了 <uses-permission android:name= ...
- Android 11安装apk异常java.lang.SecurityException: Permission Denial:
安装apk时出现There was a problem parsing the package 提示信息从抓log信息如下: 03-21 00:58:40.010 926 1129 W Acti ...
- 用java下载apk解析包出错_Android 9.0 安装包解析错误 java.lang.SecurityException: Permission Denial解决方案...
在android 9.0自动下载更新时 遇到 安装包解析错误 错误示例.png 在android 7.0使用的是同一套框架却没有问题? 然后通过adb命令抓取一下异常发现 12-18 19:21:32 ...
- 解决java.lang.SecurityException: Permission Denial: ... with revoked permission异常的问题
如果出现类似如下的异常问题:java.lang.SecurityException: Permission Denial: ... with revoked permission,说明app相应的某个 ...
- java.lang.SecurityException: Permission Denial
原文链接:http://yelinsen.iteye.com/blog/977683 我们经常在一个activity中去start另一个activity,或者与另一个acitivity的结果进行交互( ...
- Permission Denial
看了Android7.0FileProvider后,自己实现去app更新功能时遇到了问题 1.首先已经授予了读写权限 2.由于是在服务里面所以加了 intent.setFlags(Intent.FLA ...
- 关于Android 8.0java.lang.SecurityException: Permission Denial错误的解决方法
关于Android 8.0java.lang.SecurityException: Permission Denial错误的解决方法 参考文章: (1)关于Android 8.0java.lang.S ...
最新文章
- 参考文献必备神器:这个插件能快速知道收藏的论文是否靠谱
- 第四章 Joomla!扩展开发:前端开发
- python 从网络URL读取图片并直接处理的代码
- 输出链表中倒数第k个结点
- 解密虚拟 DOM——snabbdom 核心源码解读
- npm安装报错Error: EPERM: operation not permitted解决方案
- linux下面mysql不监听3306
- linux标准I/O——按对象输入和输出
- ie的window.open 未指明的错误_快递问题公告中错误使用“黑恶势力”等言辞 青岛工学院致歉...
- Python的1~100奇数之和
- 人工智能TensorFlow工作笔记005---计算图的基本应用_认识计算图
- Flutter之ScrollView简析
- RubyOnRails 小小引导(上)
- FPGA信号处理系列文章——DDS的性能和误差分析
- Tomcat控制台弱密码漏洞
- catia中的螺旋伞齿轮画法,基于CATIA的螺旋锥齿轮参数化建模方法研究
- 经典语录大全微信小程序源码下载多种分类语录多流量主模式
- 自动刷百度下拉词优化工具
- 概率论的V=max{X,Y},U=min{X,Y},W=X+Y的求解分布律解法——笔记
- 石英晶振的电路组成与设计