¿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?

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.

  • El permiso ACCESS_COARSE_LOCATION da una precisión de torre celular en Android
  • Listando los permisos de la aplicación de Android vía adb
  • BroadcastReceiver permiso para el shell de adb
  • Bypass android usb host permiso diálogo de confirmación
  • Solicitar permisos de Android M de la actividad con noHistory = "true" y / o showOnLockScreen = "true"
  • ¿Cómo puede la aplicación del sistema ubicada en / system / app tener permiso del sistema en Android 4.4 KitKat construir?
  • ¿Qué tipo de aplicación de Android requerirá permiso de android.permission.READ_PHONE_STATE?
  • INSTALL_FAILED_UPDATE_INCOMPATIBLE pero la aplicación no está instalada
  • Cómo verificar correctamente el permiso de Android dinámicamente
  • Permisos de aplicaciones en Android Marshmallow en PhoneGap
  • config.xml problema de formato
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.