Je propose deux solutions. Toutes deux nécessitent un accès Root, et toutes deux ont été testées sur un OnePlus 6 fonctionnant sous Android 10.
Solution n° 1
Ayez le script suivant (appelons-le switch-user.sh ) s'exécutent pendant le démarrage mais après que l'utilisateur ait saisi les informations de décryptage du dispositif (PIN/mot de passe).
#!/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
Ce script vérifie en permanence (avec un délai de 1 seconde) si l'utilisateur a décrypté le dispositif ou non. Si c'est le cas, il passe à l'utilisateur restreint après une seconde, ou continue à revérifier. Puisque l'ID utilisateur de mon utilisateur restreint est 10
J'ai utilisé 10 comme USER_ID
dans celui-ci. Remplacez-le par l'identifiant de l'utilisateur restreint. Voir ma réponse ici si vous avez besoin d'aide pour trouver l'ID utilisateur.
Nota : Dans le script ci-dessus, je vérifie la valeur de la propriété. vold.fbe.decrypted
qui fonctionne pour mon OnePlus 6 sous Android 10. Votre appareil peut ou non avoir la même propriété. Vous pouvez rechercher la propriété appropriée en regardant la sortie de la commande adb shell 'getprop | grep vold'
. Sinon, voyez si sys.user.0.ce_available
est disponible dans votre version d'Android.
La prochaine chose à faire est de placer ce script à un endroit de votre Android d'où le système l'exécutera de lui-même lors du démarrage. Comme j'utilise Magisk, j'ai placé ce switch-user.sh dans le répertoire /data/adb/service.d
(voir l'article de Magisk Scripts de démarrage pour plus d'informations à ce sujet) et j'ai ajouté l'autorisation d'exécution en utilisant la commande :
adb shell su -c 'chmod +x /data/adb/service.d/switch-user.sh'
Si vous n'utilisez pas Magisk, vous pouvez vous aider des réponses à l'adresse suivante Comment puis-je exécuter un script au démarrage ?
Redémarrez l'appareil pour voir si votre script fonctionne. Dans mon cas, chaque fois que j'entre mon PIN pour décrypter l'appareil, le système passe automatiquement à mon utilisateur restreint dans les deux-trois secondes qui suivent.
Solution n° 2
Si vous ne voulez pas vous embêter à injecter un script dans le processus de démarrage, vous pouvez configurer une application d'automatisation qui basculerait Android vers votre utilisateur restreint dès qu'il recevrait le message BOOT_COMPLETED, ou en d'autres termes, qui ferait quelque chose pendant le démarrage.
Je peux suggérer Tasker et MacroDroid car je les ai essayés et ils ont fonctionné sur Genymotion avec Android 6.0 et sur un OnePlus 6 avec Android 10. Vous pouvez essayer n'importe quelle application qui peut exécuter une commande/script au démarrage.
Tasker
Pour Tasker, le profil et la tâche devraient être les suivants :
Profil : Événement Dispositif de démarrage
Tâche : Code Run Shell :
-
Commande :
su 2000 -c am switch-user USER_ID
- tique Utiliser la racine
- laisser le reste des paramètres inchangés
Veillez à remplacer USER_ID
avec l'identifiant réel de l'utilisateur restreint.
MacroDroid
Pour MacroDroid, la macro devrait être la suivante :
Déclencheur : Événements relatifs au dispositif Démarrage du dispositif
Action : Applications Shell Script :
- tique Enraciné
- Entrez la commande suivante dans " Entrez le script champ " :
su 2000 -c am switch-user USER_ID
- laissez le reste des paramètres inchangés.
Veillez à remplacer USER_ID
avec l'identifiant réel de l'utilisateur restreint. Voir ma réponse ici si vous avez besoin d'aide pour trouver l'ID utilisateur.
Nota: Étant donné que de nombreuses applications sont en concurrence pour exécuter leurs fonctions XYZ au démarrage, vous pouvez constater un délai de quelques secondes avant que le changement d'utilisateur n'ait lieu.