前言

今天学习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相关推荐

  1. java.lang.SecurityException Permission Denial opening provider ngyb.createdatabase.AccountProvider

    java.lang.SecurityException: Permission Denial: opening provider ngyb.createdatabase.AccountProvider ...

  2. 解决 java.lang.SecurityException: Permission Denial: opening provider com.android.providers.contacts报错

    java.lang.SecurityException: Permission Denial: opening provider com.android.providers.contacts.Cont ...

  3. java.lang.SecurityException: Permission Denial:错误解决办法

    在SDK23也就是Android6.0.1里编写调用系统通讯录读写权限的程序,在AndroidManifest.xml中,已经配置了 <uses-permission android:name= ...

  4. 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 ...

  5. 用java下载apk解析包出错_Android 9.0 安装包解析错误 java.lang.SecurityException: Permission Denial解决方案...

    在android 9.0自动下载更新时 遇到 安装包解析错误 错误示例.png 在android 7.0使用的是同一套框架却没有问题? 然后通过adb命令抓取一下异常发现 12-18 19:21:32 ...

  6. 解决java.lang.SecurityException: Permission Denial: ... with revoked permission异常的问题

    如果出现类似如下的异常问题:java.lang.SecurityException: Permission Denial: ... with revoked permission,说明app相应的某个 ...

  7. java.lang.SecurityException: Permission Denial

    原文链接:http://yelinsen.iteye.com/blog/977683 我们经常在一个activity中去start另一个activity,或者与另一个acitivity的结果进行交互( ...

  8. Permission Denial

    看了Android7.0FileProvider后,自己实现去app更新功能时遇到了问题 1.首先已经授予了读写权限 2.由于是在服务里面所以加了 intent.setFlags(Intent.FLA ...

  9. 关于Android 8.0java.lang.SecurityException: Permission Denial错误的解决方法

    关于Android 8.0java.lang.SecurityException: Permission Denial错误的解决方法 参考文章: (1)关于Android 8.0java.lang.S ...

最新文章

  1. 参考文献必备神器:这个插件能快速知道收藏的论文是否靠谱
  2. 第四章 Joomla!扩展开发:前端开发
  3. python 从网络URL读取图片并直接处理的代码
  4. 输出链表中倒数第k个结点
  5. 解密虚拟 DOM——snabbdom 核心源码解读
  6. npm安装报错Error: EPERM: operation not permitted解决方案
  7. linux下面mysql不监听3306
  8. linux标准I/O——按对象输入和输出
  9. ie的window.open 未指明的错误_快递问题公告中错误使用“黑恶势力”等言辞 青岛工学院致歉...
  10. Python的1~100奇数之和
  11. 人工智能TensorFlow工作笔记005---计算图的基本应用_认识计算图
  12. Flutter之ScrollView简析
  13. RubyOnRails 小小引导(上)
  14. FPGA信号处理系列文章——DDS的性能和误差分析
  15. Tomcat控制台弱密码漏洞
  16. catia中的螺旋伞齿轮画法,基于CATIA的螺旋锥齿轮参数化建模方法研究
  17. 经典语录大全微信小程序源码下载多种分类语录多流量主模式
  18. 自动刷百度下拉词优化工具
  19. 概率论的V=max{X,Y},U=min{X,Y},W=X+Y的求解分布律解法——笔记
  20. 石英晶振的电路组成与设计

热门文章

  1. OneNote脱机文件的新旧电脑间转移(从win10到win11)
  2. 求推荐微信可开发手持蓝牙打印设备
  3. hive中文繁简转化opencc4j
  4. 记录自己答题带思路Python简单?先来40道基础面试题测试下
  5. 智慧城市 智慧园区_真正的智慧
  6. wxml 点击图片下载_跟着做,零基础也能做出自己的小程序
  7. 在江南这四年(成长分享)
  8. 微信小程序怎么集成腾讯IM
  9. 使用MindStudio进行城市道路交通预测
  10. 【Nav2中文网】十一、迁移指南 (四)Galactic到Humble