Cómo restringir los datos del proveedor de contenido a través de las aplicaciones

¿Cómo podemos asegurarnos de que ciertas aplicaciones no puedan acceder a mis datos almacenados en el proveedor de contenido donde en ciertas otras aplicaciones pueden acceder a eso? Básicamente, debo permitir que alguna aplicación de mi interés acceda a mis datos almacenados en el proveedor de contenido, pero no quiero que todas las aplicaciones puedan acceder a esos datos. ¿Cómo puedo conseguir esto?

Gracias.

La forma más fácil es proteger al proveedor de contenido con un permiso que defina. Haga que sea un permiso de firma para que solo las aplicaciones firmadas con su certificado puedan obtenerlo.

Ver:

http://developer.android.com/guide/topics/security/security.html

http://developer.android.com/reference/android/R.styleable.html#AndroidManifestProvider

http://developer.android.com/guide/topics/manifest/provider-element.html

Si hacer esto basado en certificados no es suficiente, tendrá que escribir los permisos usted mismo. Esto se hace llamando a Binder.getCallingUid () para las llamadas entrantes a sus aplicaciones, y para decidir si el uid dado tiene permiso para acceder a su proveedor. En realidad, implementar una política diferente que sea realmente segura requiere de mucho pensamiento y diseño cuidadoso.

En AndroidManifest.xml, en la pantalla con las propiedades de su ContentProvider, tiene dos campos:

Leer permiso WritePermission

Por lo tanto, puede definir cadenas seguras (también puede ser la ruta a algún archivo) que son permisos para acceder a su ContentProvider.

Las aplicaciones que desean acceder a su proveedor de contenido deben tener esas agregadas en sus elementos UsesPermission.