Sugiero dos soluciones. Ambos requieren acceso Root, y ambos fueron probados en un OnePlus 6 corriendo Android 10.
Solución nº 1
Tenga el siguiente script (llamémoslo switch-user.sh ) ejecutarse durante el arranque, pero después de que el usuario haya introducido las credenciales de descifrado del dispositivo (PIN/contraseña).
#!/system/bin/sh
while true; do
flag=\`/system/bin/getprop vold.fbe.decrypted\`
if \[ $flag \]; then
sleep 1;
/system/bin/am switch-user USER\_ID # replace USER\_ID term with restricted user's id
exit;
else
sleep 1;
fi
done
Lo que hace este script es comprobar continuamente (con un retardo de 1 segundo) si el usuario ha desencriptado el dispositivo o no. En caso afirmativo, cambia al usuario restringido después de un segundo, o continúa volviendo a comprobar. Dado que el Id de usuario de mi usuario restringido es 10
Utilicé 10 como USER_ID
en él. Cámbielo por el ID de usuario que tenga su usuario restringido. Vea mi respuesta aquí si necesita ayuda para averiguar el Id. de usuario.
Nota : En el script anterior estoy comprobando el valor de la propiedad vold.fbe.decrypted
que funciona para mi OnePlus 6 con Android 10. Su dispositivo puede o no tener la misma propiedad. Puede buscar la propiedad relevante mirando en la salida del comando adb shell 'getprop | grep vold'
. Alternativamente, vea si sys.user.0.ce_available
está disponible en su versión de Android.
Lo siguiente que hay que hacer es poner ese script en una ubicación de tu Android desde la que el sistema lo ejecute por sí mismo durante el arranque. Como yo uso Magisk, coloqué ese switch-user.sh en el directorio /data/adb/service.d
(ver Magisk's Guiones de arranque para más información al respecto) y se le ha añadido permiso de ejecución utilizando el comando:
adb shell su -c 'chmod +x /data/adb/service.d/switch-user.sh'
Si no utilizas Magisk, puedes ayudarte con las respuestas en ¿Cómo puedo ejecutar un script en el arranque?
Reinicia el dispositivo para ver si tu script funciona. En mi caso, cada vez que introduzco mi PIN para descifrar el dispositivo, que dentro de dos-tres segundos el sistema cambia automáticamente a mi usuario restringido.
Solución nº 2
Si no quieres la molestia de inyectar un script en el proceso de arranque puedes configurar una aplicación de automatización que cambiaría el Android a tu usuario restringido una vez que reciba la emisión BOOT_COMPLETED, o en otras palabras, hacer algo durante el arranque.
Puedo sugerir Tasker y MacroDroid ya que los he probado y funcionaban en Genymotion con Android 6.0 y en un OnePlus 6 con Android 10. Puedes probar cualquier aplicación que pueda ejecutar un comando/script al inicio.
Tasker
Para Tasker, el perfil y la tarea deben ser estos:
Perfil : Evento → Arranque del dispositivo
Tarea : Código → Ejecutar Shell:
- Comando :
su 2000 -c am switch-user USER_ID
- garrapata Uso root
- dejar el resto de la configuración intacta
Asegúrese de sustituir USER_ID
con el identificador real del usuario restringido.
MacroDroid
Para MacroDroid, la macro debería ser esta:
Disparador : Eventos del dispositivo → Arranque del dispositivo
Acción : Aplicaciones → Shell Script:
- garrapata rooteado
- Introduzca el siguiente comando en " Introducir script ":
su 2000 -c am switch-user USER_ID
- dejar el resto de la configuración intacta
Asegúrese de sustituir USER_ID
con el identificador real del usuario restringido. Ver mi respuesta aquí si necesita ayuda para averiguar el Id. de usuario.
Nota: como muchas aplicaciones competirían por ejecutar sus cosas XYZ durante el arranque, es posible que notes un retraso de un par de segundos antes de que se produzca el cambio de usuario.