Android使用ContentProvider报异常(java.lang.SecurityException: Permission Denial: opening provider)
16lz
2022-06-04
android使用ContentProvider直接报错,查看错误信息提示:
java.lang.SecurityException: Permission Denial: opening provider
首先确认的是代码没有问题,这就百思不得其解了,几经周折,终于找到原因。
原因:
在manifest里provider节点的exported属性没有设置,应该将熟悉设置为true
exporeted介绍
android:exported 是Android中的四大组件 Activity,Service,Provider,Receiver 四大组件中都会有的一个属性。
作用:是否支持其它应用调用当前组件。默认值:如果包含有intent-filter 默认值为true; 没有intent-filter默认值为false
如在provider中:
(1)当前内容提供者是否会被其它应用使用: true: 当前提供者可以被其它应用使用。任何应用可以使用Provider通过URI 来获得它,也可以通过相应的权限来使用Provider。
(2)false:当前提供者不能被其它应用使用。设置Android:exported=“false”来限制其它应用获得你应用的Provider。只有拥有同样的user ID 的应用可以获得当前应用的Provider。
(3)当Android sdk 的最小版本为16或者更低时他的默认值是true。如果是17和以上的版本默认值是false。
(4)可以通过Android:exported=“fasle” 和 permission来限制当前应用Provider是否会被其它应用获取。
更多相关文章
- [置顶] android IPC通信(中)-ContentProvider&&Socket
- Android网络连接处理学习笔记
- android中的http访问方式
- android语音识别和合成第三方
- Android(安卓)Intents
- Android版本和兼容情况
- 箭头函数的基础使用
- NPM 和webpack 的基础使用
- Python list sort方法的具体使用