繁体   English   中英

自定义内容提供程序和权限拒绝例外

[英]Custom content provider and Permission Denial exception

)我有两个应用程序。 在应用程序A中,我有一个数据库,可以从应用程序B中进行访问。我创建了自己的ContentProvider,以使应用程序B可以将数据写入应用程序A。但是,当我安装应用程序B然后安装应用程序A时,我得到了此异常-java.lang.SecurityException:权限拒绝:打开提供程序。 但是,当我安装应用程序A,然后安装B时-一切正常,应用程序可以通过提供程序进行通信。 我想知道这是正常的Android行为还是会出问题? 谢谢

编辑

这是我的应用程序中的一块清单

<permission android:name="com.myapp.READ_DATABASE" android:protectionLevel="normal" />
<permission android:name="com.myapp.WRITE_DATABASE" android:protectionLevel="normal" />

<provider android:authorities="....."
            android:name="......"
            android:exported="true"
            android:readPermission="com.myapp.READ_DATABASE"
            android:writePermission="com.myapp.WRITE_DATABASE">
        </provider>

这是我的应用程序B清单的一部分

<uses-permission android:name="com.myapp.READ_DATABASE"/>
<uses-permission android:name="com.myapp.WRITE_DATABASE"/>

您的问题是应用安装的顺序。 您应该首先安装App A(提供内容提供者和权限的应用程序),然后安装App B(访问内容提供者的应用程序)。

好的,我找到了答案,但是它有缺点。 您需要将权限属性添加到清单中的两个应用程序中。

<permission android:name="com.example.permission.READ" 
android:protectionLevel="normal"/>

缺点是两个应用程序都必须使用相同的签名证书才能运行,否则Android不允许您安装两个应用程序。

另请注意,使用中的应用应使用签名的保护级别

<permission android:name="com.example.permission.READ" 
android:protectionLevel="signature"/>

请参阅此处的答案安装应用程序的顺序正在改变行为?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM