背景
我正在阅读this tutorial on Android Content Providers。我从本教程中了解到,
为了让其他应用程序访问Content Provider的数据,提供者应用程序必须指定客户端应用程序访问其提供者数据所需的权限。
客户端应用程序使用<uses-permission>
元素在其清单文件中指定所需的权限,例如
<uses-permission android:name="android.permission.READ_USER_DICTIONARY" > <!-- In the client app's manifest -->
然后,当用户安装客户端应用程序时,APK管理员会询问用户是否同意这些权限(在客户端应用程序中)。
问题
我的问题是,提供商(app)如何指定必须授予其他客户端应用程序的权限才能访问提供商的数据?
查找提供者的读访问权限的确切名称 您正在使用,以及使用的其他访问权限的名称 提供商,请查看提供商的文档。
这是在提供商应用中指定这些权限的方式 - 在 提供商的文档 中?如果是这样,那文档在哪里找到了?我在哪里可以找到SearchableDictionary提供程序的文档(在教程中用作示例),如果我在我的应用程序中编写Content Provider,我应该在哪里提供该文档?
答案 0 :(得分:18)
在提供商应用的AndroidManifest.xml中定义权限
<permission
android:name="com.myapp.PERMISSION"/>
在提供商应用的AndroidManifest.xml中定义提供商
<provider
android:name=".MyProvider"
android:authorities="com.myapp.MyProvider.AUTHORITY"
android:enabled="true"
android:exported="true"
android:multiprocess="true"
android:readPermission="com.myapp.PERMISSION" />
客户的AndroidManifest.xml应具有uses-permission标记
<uses-permission android:name="com.myapp.PERMISSION"/>
然后客户端可以访问提供者
Cursor cursor = getContentResolver().query(
Uri.parse("content://com.myapp.MyProvider.AUTHORITY/xxx" ),null, null, null, null);