当前位置:   article > 正文

如何正确定义ContentProvider权限的问题_getcontentprovider配置访问权限

getcontentprovider配置访问权限

        最近写个demo,效果是写一个A应用定义一个Room为数据库的ContentProvider。写一个B应用,可以通过contentResolver去访问。 定义的时候我在A应用定义了读写权限。在B应用怎么申请权限都不能访问contentProvider。如果删掉A应用的读写权限就能访问。学习学全套。我就给出了定义contentProvider权限的步骤。

1.在provider中定义permision

  1. <provider
  2. android:authorities="com.demo.providerdemo.provider"
  3. android:name="com.demo.provider.provider.MyProvider"
  4. android:readPermission="com.demo.providerdemo.provider.read"
  5. android:writePermission="com.demo.providerdemo.provider.write"
  6. android:exported="true"
  7. android:grantUriPermissions="true"
  8. android:multiprocess="true"
  9. android:enabled="true">
  10. </provider>

2.在manifest 中定义这2个permission

  1. <manifest xmlns:android="http://schemas.android.com/apk/res/android"
  2. xmlns:tools="http://schemas.android.com/tools"
  3. package="com.demo.provider">
  4. <permission android:name="com.demo.providerdemo.provider.read"
  5. android:protectionLevel="normal"
  6. />
  7. <permission android:name="com.demo.providerdemo.provider.write"
  8. android:protectionLevel="normal"
  9. />
  10. ...
  11. </manifest>

然后在B应用中定义这2个应用的permission,如果使用android 11  则需要加一个requires,申明要用的provider的android:authorities。

  1. <manifest xmlns:android="http://schemas.android.com/apk/res/android"
  2. xmlns:tools="http://schemas.android.com/tools"
  3. package="com.demo.contentresolver">
  4. <queries>
  5. <provider android:authorities="com.demo.providerdemo.provider"
  6. />
  7. </queries>
  8. <uses-permission android:name="com.demo.providerdemo.provider.read"/>
  9. <uses-permission android:name="com.demo.providerdemo.provider.write"/>
  10. </manifest>

还有一个注意点:

1.必须先安装contentProvider 的应用再安装 contentResolver的应用。不然就会出现权限问题。

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号