Android 内容提供商';的应用程序指定客户端应用程序访问提供程序所需的权限';谁的数据?

Android 内容提供商';的应用程序指定客户端应用程序访问提供程序所需的权限';谁的数据?,android,permissions,android-manifest,android-contentprovider,android-contentresolver,Android,Permissions,Android Manifest,Android Contentprovider,Android Contentresolver,背景 我正在读书。我从本教程中了解到 为了让其他应用程序访问内容提供商的数据,提供商应用程序必须指定客户端应用程序访问其提供商数据所需的权限 客户端应用程序使用元素指定其清单文件中所需的权限,例如 <uses-permission android:name="android.permission.READ_USER_DICTIONARY" > <!-- In the client app's manifest --> 然后,当用户安装客户端应用程序时,APK管理器请

背景

我正在读书。我从本教程中了解到

为了让其他应用程序访问内容提供商的数据,提供商应用程序必须指定客户端应用程序访问其提供商数据所需的权限

客户端应用程序使用
元素指定其清单文件中所需的权限,例如

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

然后,当用户安装客户端应用程序时,APK管理器请求用户同意这些权限(在客户端应用程序中)

问题

我的问题是,提供商(应用程序)如何指定其他客户端应用程序访问提供商数据所必须授予的权限

查找提供程序的读取访问权限的确切名称 您正在使用,以及所使用的其他访问权限的名称 由提供商提供,查看提供商的文档


那么,这就是在提供者应用程序中指定这些权限的方法吗?在提供者的文档中?如果是,在哪里可以找到该文档?我在哪里可以找到SearchableDictionary提供程序的文档(在教程中用作示例),如果我在应用程序中编写内容提供程序,我应该在哪里提供该文档?

在提供程序应用程序的AndroidManifest.xml中定义权限

<permission
    android:name="com.myapp.PERMISSION"/>
<provider
        android:name=".MyProvider"
        android:authorities="com.myapp.MyProvider.AUTHORITY"
        android:enabled="true"
        android:exported="true"
        android:multiprocess="true"
        android:readPermission="com.myapp.PERMISSION" />

非常感谢你给我一个非常清晰的答案。但我仍然对我在《开发者指南》中引用的关于提供者文档的一段话感到有些困惑:他们在谈论什么文档?你知道吗?但我现在很清楚,我可以通过查看提供商应用程序的清单来了解权限的名称。所以谢谢你。@Solace我确实遇到了你的问题,你能告诉我在这个示例中你在哪里找到了UserDictionary的清单文件吗???就像我被跟踪一样。我创建了一个内容提供商应用程序(充当服务器)和另一个访问数据的应用程序(充当客户端).我还创建了权限,并在清单中使用。但在客户端应用程序中,始终不授予权限。转到链接并查看详细信息这正是我正在寻找的解决方案。谢谢你D
<uses-permission android:name="com.myapp.PERMISSION"/>
Cursor cursor = getContentResolver().query(
Uri.parse("content://com.myapp.MyProvider.AUTHORITY/xxx" ),null, null, null, null);