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

1.在provider定义permision

<provider
            android:authorities="com.demo.providerdemo.provider"
            android:name="com.demo.provider.provider.MyProvider"
            android:readPermission="com.demo.providerdemo.provider.read"
            android:writePermission="com.demo.providerdemo.provider.write"
            android:exported="true"
            android:grantUriPermissions="true"
            android:multiprocess="true"
            android:enabled="true">

        </provider&gt;

2.在manifest 中定义这2个permission

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    package="com.demo.provider"&gt;
    <permission android:name="com.demo.providerdemo.provider.read"
        android:protectionLevel="normal"
        /&gt;
    <permission android:name="com.demo.providerdemo.provider.write"
        android:protectionLevel="normal"
        /&gt;

...
</manifest>

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

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    package="com.demo.contentresolver">

    <queries>
        <provider android:authorities="com.demo.providerdemo.provider"
            />
    </queries>
    <uses-permission android:name="com.demo.providerdemo.provider.read"/>
    <uses-permission android:name="com.demo.providerdemo.provider.write"/>


</manifest>

还有一个注意点:

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

原文地址:https://blog.csdn.net/xiexiaotian11/article/details/127591452

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任

如若转载,请注明出处:http://www.7code.cn/show_17693.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注