¿Cómo implementar ContentProvider de sólo lectura?
Me pregunto cómo implementar mejor un ContentProvider de sólo lectura. Quiero que mi fuente de datos se modifique sólo desde mi propia aplicación a través de métodos especiales adicionales de mi ContentProvider (que por supuesto no son accesibles a través de un ContentResolver). En otras palabras, otras aplicaciones sólo deberían poder usar el método de consulta de mi ContentProvider pero no insertar, eliminar o actualizar.
La solución obvia parece ser simplemente devolver null / 0/0 y no hacer nada más en insert / delete / update. ¿Sería mejor siempre lanzar una excepción en estos métodos en su lugar para comunicar claramente que estas operaciones no están permitidas? ¿O existe la posibilidad de restringir el acceso al ContentProvider al método de consulta sólo a través de permisos?
- Solicitud de permiso de cámara con Android SDK 23
- Permiso de negación: apertura del proveedor com.android.providers.contacts.ContactsProvider2 de ProcessRecord en Android Studio
- Obtener permiso error java.lang.SecurityException: Permiso de denegación en 3.x dispositivos Android al obtener el nombre del archivo adjunto de correo electrónico
- ¿Cómo obtener permisos adicionales de Facebook con android sdk 3.0 beta?
- Uso de permisos que android 2.1 no sabe (en android 2.1)
- Los teléfonos de Redmi no piden permisos de SMS y por lo tanto no leen sms
- Problema al solicitar actualizaciones de la ubicación por red
- No se puede mover una aplicación a la tarjeta SD
- ¿Valgrind no puede ejecutar la herramienta memcheck en el sistema operativo Android?
- Ejecutar una aplicación con permiso de root en Android
- Cómo obtener el historial de uso de datos móviles con NetworkStatsManager
- Funciones de Android y permisos de archivo
- Uso de MediaController en Android 5
Un método para lograr esto es a través de permisos de seguridad a los que puede acceder en este enlace en el párrafo ContentProvider. Específicamente, establecería un writePermission en su proveedor en su archivo xml de AndroidManifest.
Sin embargo, si no desea utilizar permisos de seguridad, puede utilizar los métodos mencionados en su segundo párrafo. Yo sugeriría lanzar excepciones para que quede claro que no se puede acceder a esas características de inserción / actualización / eliminación específicas.
Dos años más tarde, me estoy haciendo la misma pregunta. Entiendo que los permisos son la respuesta.
Sin embargo, usted tiene que escribir algo dentro de los métodos de "insertar / eliminar / actualizar" (que esperamos no será callable).
Estoy de acuerdo en el uso de una excepción, porque, como no se supone que es la llamada, debe ser advertido si es.
Pero una línea fundada aquí : dice
Aunque debe implementar estos métodos, su código no tiene que hacer nada excepto devolver el tipo de datos esperado. Por ejemplo, es posible que desee impedir que otras aplicaciones inserten datos en algunas tablas. Para hacer esto, puede ignorar la llamada a insert () y devolver 0.
Eso diría que la buena manera de hacerlo es simplemente devolver null / 0/0. Voy a usar de esta manera.
No estoy seguro de si vale la pena pasar el tiempo en una cuestión menor de todos modos.
- ¿Cómo comprobar debugable o tipo de compilación de depuración en la biblioteca de Android?
- Android: JNI ERROR (error de aplicación): desbordamiento de tabla de referencia local (máx = 512)