【发布时间】:2015-09-07 20:02:25
【问题描述】:
有没有办法让外部内容提供者只对一个包可用? 例如仅适用于我的应用程序? 提前致谢。
【问题讨论】:
-
你做到了吗?
标签: android package android-contentprovider
有没有办法让外部内容提供者只对一个包可用? 例如仅适用于我的应用程序? 提前致谢。
【问题讨论】:
标签: android package android-contentprovider
虽然为时已晚,但我想分享我找到的答案, 您需要像这样在内容提供程序应用程序的清单文件中声明自己的自定义权限..
<permission android:name= "com.android.testpermission" android:protectionLevel="signature" >
在你的 Content Provider 标签内,你必须指定一个客户端需要这样的权限......
<provider android:name=".MyProvider"
android:authorities="com.example.contentproviderexample.MyProvider" android:exported="true" android:permission="com.android.testpermission" android:multiprocess="true" ></provider>
在你的第二个应用程序中访问内容提供者数据,你需要在清单文件中指定使用权限,像这样..
<uses-permission android:name="com.android.testpermission"/>
现在使用相同的密钥库签名对两个应用程序进行签名,这样任何其他应用程序都无法访问您的内容提供者数据。只有拥有这些权限并使用相同密钥库签名签名的应用程序才能访问提供者数据。
【讨论】:
您可以为内容提供者的清单声明添加权限。只有拥有这些权限的应用程序才能访问提供程序。
【讨论】:
android:exported="false")。但是,这仅在内容提供者是您的应用程序的一部分时才有效。