Android:java.lang.SecurityException: Permission Denial解决办法

有时程序需要我们创建自己的内容提供器,可能出现java.lang.SecurityException: Permission Denial: opening provider com.example.db.PersonProvider from ProcessRecord错误消息。

这是因为在你的提供外部访问接口的应用程序中没有提供给其他程序访问数据的权限。

解决方法:
在你的provider标签里添加android:exported属性

<provider                  android:name="com.example.databasetest.DatabaseProvider"
           android:authorities="com.example.databasetest.provider"

android:exported="true" >
</provider> 

android文档里的内容

android:exported
Whether the content provider is available for other applications to use:
true: The provider is available to other applications. Any application can use the provider’s content URI toaccess it, subject to the permissions specified for the provider.
false: The provider is not available to other applications. Set
android:exported=”false” to limit access to the provider to your
applications. Only applications that have the same user ID (UID) as the provider will have access to it.
The default value is “true” for applications that set either android:minSdkVersion or android:targetSdkVersion to “16” or lower. For applications that set either of these attributes to “17” or higher, the default is “false”.

You can set android:exported=”false” and still limit access to your
provider by setting permissions with the permission attribute.

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值