Imponga los permisos de propiedad de artículos en el proveedor de contenido
Tengo un proveedor de contenido exportado que se comparte entre varias de mis aplicaciones, y para el que un tercero podría ser libre de escribir sus propias aplicaciones una vez que he publicado la API.
En este momento cualquier aplicación cliente puede ejecutar cualquier operación CRUD en cualquier elemento del proveedor de contenido. Quiero hacer cumplir algunos permisos de acceso de tal manera que una aplicación solo puede modificar o eliminar elementos que creó, al tiempo que permite que cualquier aplicación lea todos los elementos del proveedor y cree nuevos elementos.
- Content: // mms-sms / conversations / return NullPointerException en Android ICS Samsung
- La consulta MediaStore.Audio.Playlist de Android está vacía
- Destrucción / ciclo de vida de ContentProvider
- ¿Cómo ejecutar un servicio singleton (compartido) en una biblioteca para múltiples aplicaciones?
- Content_URI en el proveedor de contenido
¿Hay alguna forma de que pueda acceder al UID de la aplicación que llama y almacenar que con los elementos de nueva creación, y luego comparar con ese valor en las operaciones futuras? ¿Sería mejor usar el nombre del paquete? Supongo que el UID podría cambiar si el usuario desinstaló y reinstaló una aplicación, y no quiero que pierdan el acceso a esos elementos si lo hacen.
- Lista de proveedores de contenido de Android
- En una aplicación de Android, ¿debo tener un proveedor de contenido por tabla o sólo uno para toda la aplicación?
- ¿Debo usar un proveedor de contenido?
- Android: acceder a la base de datos SQLite a través del proveedor de contenido o implementar DAO?
- ¿Cuándo eliminar un archivo temporal utilizado en Intent.SEND para el correo electrónico adjunto?
- ¿Cómo especifica la aplicación del proveedor de contenido los permisos que necesitan las aplicaciones de los clientes para acceder a los datos del proveedor?
- Content Observer onChange método llamado dos veces después de 1 cambio en el cursor
- Widget con el proveedor de contenido; Imposible de usar ReadPermission?
Sí, puede hacer una comprobación del nombre del paquete. A continuación, le indicamos cómo puede recuperar el nombre del paquete basado en el uid de llamada:
private static Collection<String> getCallingPackages(Context context) { int callingUid = Binder.getCallingUid(); if (callingUid == 0) { return Collections.emptyList(); } String[] packages = context.getPackageManager().getPackagesForUid(callingUid); return new ArrayList<>(Arrays.asList(packages)); }
Esto devuelve una lista de nombres de paquetes porque, para citar la documentación:
En la mayoría de los casos, será un nombre de paquete único, el paquete al que se le ha asignado ese identificador de usuario.
Cuando hay varios paquetes compartiendo el mismo identificador de usuario a través del mecanismo "sharedUserId", se devolverán todos los paquetes con ese id.
- Cómo crear efecto Parallax en Recycler Ver elemento en Scroll?
- Cómo reproducir un archivo de audio cuando se hace clic en un botón determinado de la actividad anterior