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

更多相关文章

  1. [置顶] android IPC通信(中)-ContentProvider&&Socket
  2. Android网络连接处理学习笔记
  3. android中的http访问方式
  4. android语音识别和合成第三方
  5. Android(安卓)Intents
  6. Android版本和兼容情况
  7. 箭头函数的基础使用
  8. NPM 和webpack 的基础使用
  9. Python list sort方法的具体使用

随机推荐

  1. android对话框(非速成)
  2. 深入解读Android的内部进程通信接口AIDL
  3. Firemonkey扩展增强:Android(安卓)浏览器
  4. Android实例剖析笔记(一)
  5. 我对Android的理解
  6. 万树IT:你的Android不好用的原因就是这些!
  7. Android中的服务(service)详解(三)--远程服务
  8. ART深度探索开篇:从Method Hook谈起
  9. Android知识梳理之Sqlite数据库的使用和
  10. ArcGIS Android MapView离线浏览无限范围