¿Cómo compartir datos seguros entre dos o más aplicaciones en android?

Estoy creando un marco de aplicación para el entorno empresarial que implica el intercambio de datos entre dos o más aplicaciones de la memoria del dispositivo . Estos datos deben ser almacenados en el dispositivo y accesibles sólo a unas pocas aplicaciones (que pueden ser identificadas por los certificados utilizados para instalarlas) . Además, debe almacenarse de forma segura para no ser accesible a otras aplicaciones de terceros. ¿Cuál es la mejor manera de implementar esta funcionalidad?

He leído sobre ContentProviders y ContentResolvers que a mi entender solo facilitan este proceso. El almacenamiento real de datos es lo que es más importante. También he mirado en el API de llavero de Android que parece ser el más cercano a lo que necesito para lograr.

¿Hay una manera de integrar ContentProviders y ContentResolvers con las API de Keychain? ¿Es esta la forma correcta de hacerlo? Si no, ¿cuál es la mejor manera de lograr lo mismo ? Además, no he sido capaz de encontrar buenas muestras de código para entender completamente el funcionamiento de la API de llavero . ¡Por favor ayuda!

Editar:
También he mirado la API de Keystore . Esto utiliza internamente el API de llavero y para compartir datos entre las aplicaciones, Llavero debe ser utilizado. Aunque no he podido encontrar ejemplos de código para la misma o una documentación detallada o una guía de API sobre cómo usar la API de llavero. Estoy buscando un equivalente androide del llavero iOS .

Algo conocido como perfiles administrados también se ha introducido en Android 5. ¿Es esta la manera correcta de lograr lo que estoy tratando de hacer?

Tienes que declarar tus aplicaciones con el mismo sharedUserId , como:

 <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.mydomains.myapp" android:sharedUserId="com.mydomains.shared.user.id" android:sharedUserLabel="@string/appName"> 

En este caso, todos los datos almacenados en el almacenamiento privado de ambas aplicaciones estarán disponibles entre sí (se supone que han firmado con la misma firma)

Como leer el manual:

SharedUserId: El nombre de un ID de usuario de Linux que se compartirá con otras aplicaciones. De forma predeterminada, Android asigna a cada aplicación su propio ID de usuario único. Sin embargo, si este atributo se establece en el mismo valor para dos o más aplicaciones, todos compartirán el mismo ID, siempre que también estén firmados por el mismo certificado. La aplicación con el mismo ID de usuario puede acceder a los datos de los demás y, si se desea, ejecutarse en el mismo proceso.

  • Android M y aplicaciones de administración de dispositivos
  • Webview evitar la alerta de seguridad de google jugar con la implementación de onReceivedSslError
  • Utilice KeyPairGeneratorSpec para el nivel de API de Android <18?
  • ¿Cómo evitar el uso de keystore y contraseña perdidas?
  • Causa de "Esta aplicación contiene código que intenta omitir las protecciones de seguridad de Android"
  • ¿Cuál es el mejor lugar para almacenar claves secretas en una aplicación para Android?
  • Android Store Store API 23, use setUserAuthenticationRequired sin escáner de huellas dactilares
  • Pide patrón de desbloqueo - Android
  • Almacenamiento de claves en Android
  • Advertencia SSL de google play
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.