android - studio - ¿Cómo especifica la aplicación de Content Provider los permisos que necesitan las aplicaciones cliente para acceder a los datos del proveedor?
que es un proveedor de contenido en android (1)
FONDO
Estoy leyendo este tutorial sobre proveedores de contenido de Android . Entiendo por este tutorial que,
Para que otras aplicaciones puedan acceder a los datos de un proveedor de contenido, la aplicación del proveedor debe especificar los permisos que las aplicaciones del cliente deben tener para acceder a los datos de su proveedor.
Las aplicaciones cliente especifican los permisos que requieren en su archivo de manifiesto utilizando el elemento <uses-permission>
, por ejemplo
<uses-permission android:name="android.permission.READ_USER_DICTIONARY" > <!-- In the client app''s manifest -->
Luego, el administrador de APK solicita el consentimiento del usuario sobre estos permisos (en la aplicación cliente) cuando el usuario está instalando la aplicación cliente.
PREGUNTA
Mi pregunta es, ¿cómo especifica el proveedor (aplicación) los permisos que otras aplicaciones cliente deben tener para que puedan acceder a los datos del proveedor?
De la guía del desarrollador ,
Para encontrar el nombre exacto del permiso de acceso de lectura para el proveedor que está utilizando, así como los nombres de otros permisos de acceso utilizados por el proveedor , consulte la documentación del proveedor.
Entonces, ¿esa es la forma de especificar esos permisos en la aplicación del proveedor, en la documentación del proveedor ? Si es así, ¿dónde se encuentra esa documentación? ¿Dónde puedo encontrar esa documentación para el proveedor SearchableDictionary (utilizado como un ejemplo en el tutorial) y si escribo un proveedor de contenido en mi aplicación, ¿dónde debo proporcionar esa documentación?
Defina el permiso en AndroidManifest.xml de la aplicación del proveedor
<permission
android:name="com.myapp.PERMISSION"/>
Definir proveedor en AndroidManifest.xml de la aplicación del proveedor
<provider
android:name=".MyProvider"
android:authorities="com.myapp.MyProvider.AUTHORITY"
android:enabled="true"
android:exported="true"
android:multiprocess="true"
android:readPermission="com.myapp.PERMISSION" />
El AndroidManifest.xml del cliente debe tener la etiqueta uses-permission
<uses-permission android:name="com.myapp.PERMISSION"/>
Entonces el cliente puede acceder al proveedor
Cursor cursor = getContentResolver().query(
Uri.parse("content://com.myapp.MyProvider.AUTHORITY/xxx" ),null, null, null, null);