El ID de usuario de Linux que Android utiliza para aislar las aplicaciones entre sí no tienen nada que ver con perfiles de usuario en las tabletas de Android 4.2.
En Android, cada aplicación tiene su propio directorio para guardar datos. El sistema de identificación de usuario de Linux se usa para asegurarse de que las aplicaciones no puedan leer los datos de las demás. Pero todos estos directorios de datos están dentro de un directorio en el sistema de archivos, /data/user/0
. Digamos que el primer usuario se llama Abulurd, y que instala la aplicación Showr. Se le podría dar el ID de usuario 1004, y el directorio /data/user/0/com.shadowburst.showr
.
Ahora, digamos que creas un nuevo perfil de usuario para Beatrice. Ella obtiene un nuevo directorio, /data/user/1
que empieza vacío. Cuando se conecta al dispositivo, e instala Showr, no descarga la aplicación de nuevo (porque el instalador de la aplicación de Android sabe que el archivo APK ya está en el dispositivo), pero crea un nuevo ID de usuario 1007 (por ejemplo), y un nuevo directorio /data/user/1/com.shadowburst.showr
.
Android utiliza los permisos del sistema de archivos de Linux, y los diferentes ID de usuario de Linux, no sólo para asegurarse de que Abulurd's Showr no pueda leer los datos de las otras aplicaciones de Abulurd, sino también que Abulurd's Showr no pueda leer los datos de Beatrice's Showr. Las dos instancias de Showr se ejecutan en diferentes procesos, con diferentes IDs de usuario.
Si estás familiarizado con la terminología de Linux, hacer un nuevo perfil de usuario es similar a usar chroot
en el dispositivo para conseguir una parte aislada del sistema de archivos para ejecutar aplicaciones.
Lo que he descrito es el proceso habitual, pero al igual que las aplicaciones pueden escribirse para compartir un directorio de datos con otras aplicaciones del mismo desarrollador (firmadas con la misma clave), Android da a las aplicaciones la oportunidad de decir que funcionan con varios usuarios. De esta manera, una aplicación puede ser escrita para tener un proceso para todos los perfiles de usuario, para permitirles compartir datos o realizar alguna función especial. La pantalla de bloqueo tiene que funcionar así, por ejemplo, porque todos los perfiles de usuario comparten una aplicación de pantalla de bloqueo, que tiene que leer la configuración de la pantalla de bloqueo de todos los usuarios.