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 原生系统给电信发短信出现乱码或者收不到的原因
  2. Android学习——基础组件
  3. Android adb命令启动系统组件
  4. android调用系统邮件组件(intent匹配的流程)
  5. 可循环显示图像的Android Gallery组件
  6. Android下基于OpenGL的程序会发生纹理丢失的原因

随机推荐

  1. SQL中EXPLAIN命令的使用方法
  2. Mysql 索引该如何设计与优化
  3. Django创建项目+连通mysql的操作方法
  4. MySQL Group by的优化详解
  5. MySQL 复制表的方法
  6. 详解MySQL kill 指令的执行原理
  7. Mysql调优Explain工具详解及实战演练(推
  8. mysql数据库删除重复数据只保留一条方法
  9. android学习笔记---59_各种图形的使用介
  10. Android(安卓)Map API key 申请