No he encontrado una publicación que solicite la misma restricción que yo.Restringir el acceso al proveedor de contenido
Tengo una aplicación que proporciona un proveedor de contenido (llámalo aplicación principal) a otras aplicaciones (llámalas aplicaciones de cliente). Quiero restringir el acceso al proveedor de contenido desde las aplicaciones del cliente para admitir solo los insertar y quizás consultar métodos.
Lo que no quiero:
- hacer que el proveedor de contenido privado ya que el objetivo principal es proporcionar una base de datos a las aplicaciones cliente.
- Restrinja el acceso con las firmas de las aplicaciones cliente porque cualquiera debe poder escribir una aplicación cliente que use la plataforma principal de la aplicación.
La solución más obvia que veo es escribir dos proveedores de contenido, uno con acceso completo privado de la aplicación principal y un público restringido. Pero creo que definitivamente esta no es una forma adecuada.
De acuerdo con este Google groups post, estoy pensando en utilizar Binder.getCallingUid()
en las llamadas al proveedor de contenido para detectar si la llamada proviene de la aplicación principal o no. Así que no puedo hacer nada en actualización y eliminar los métodos si la llamada no proviene de la aplicación principal.
¿Cómo puedo obtener la aplicación principal UID para comparar? Y si es posible, ¿esta solución es segura?
Gracias por su consejo.
Si entiendo correctamente, la aplicación que contiene el componente proveedor de contenido debe ser la única que tenga acceso de escritura. ¿Por qué no puede usar esa funcionalidad sin pasar por la interfaz del proveedor de contenido? En ese caso, el proveedor de contenido solo admitiría la interfaz de consulta. – Sameer
Desafortunadamente, el acceso principal que necesitan las aplicaciones cliente es la inserción. Entonces también necesitan tener acceso de escritura. Pero tiene razón, la aplicación principal no está obligada a usar el proveedor de contenido, pero aumentará la complejidad y la facilidad de mantenimiento. – FabiF
bien, sigue el mismo punto.la aplicación principal puede hacer inserciones, actualizaciones y eliminaciones directamente sin pasar por la interfaz del proveedor de contenido. El proveedor de contenido solo proporciona una interfaz de inserción y consulta. – Sameer