Android使用ContentProvider报异常(java.lang.SecurityException: Permission Denial: opening provider)

来源:互联网 发布:java从入门到精通地5版 编辑:程序博客网 时间:2024/06/05 18:20

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是否会被其它应用获取。

0 0
原创粉丝点击