背景
我正在阅读this tutorial on Android Content Providers。我从本教程中了解到,
为了让其他应用程序访问内容提供程序的数据,提供程序应用程序必须指定客户端应用程序访问其提供程序数据所需的权限。
客户端应用程序使用<uses-permission>元素指定它们在清单文件中所需的权限,例如。

<uses-permission android:name="android.permission.READ_USER_DICTIONARY" > <!-- In the client app's manifest -->

然后,当用户安装客户端应用程序时,apk管理器请求用户同意这些权限(在客户端应用程序中)。
问题
我的问题是,提供商(应用)如何指定必须授予其他客户端应用的权限,以便它们访问提供商的数据?
developer guide开始,
查找提供程序的读取访问权限的确切名称
您正在使用,以及使用的其他访问权限的名称
按提供者,查看提供者的文档。
那么,这是在提供商的文档中,在提供商的应用程序中指定这些权限的方法吗?如果是,文件在哪里?在哪里可以找到可搜索词典提供程序的文档(在教程中用作示例),如果我在应用程序中编写了内容提供程序,我应该在哪里提供该文档?

最佳答案

在提供程序应用程序的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权限标记
<uses-permission android:name="com.myapp.PERMISSION"/>

然后客户端可以访问提供程序
Cursor cursor = getContentResolver().query(
Uri.parse("content://com.myapp.MyProvider.AUTHORITY/xxx" ),null, null, null, null);

10-07 19:32
查看更多