Déconnexion de session sur l'appareil avec plusieurs utilisateurs?

10

Il existe une option pour basculer entre les utilisateurs, mais il n'y a pas d'option pour se déconnecter d'une session utilisateur active. Les applications et les services d'arrière-plan pour les utilisateurs inactifs (une fois connectés et déconnectés) continuent de fonctionner en déchargeant la batterie.

La seule façon, je pense, est de redémarrer l'appareil et de ne pas connecter l'utilisateur.

Alors, existe-t-il un moyen pour le propriétaire de forcer les utilisateurs inactifs ultérieurs à se déconnecter de leur session? J'ai un accès superutilisateur au propriétaire avec android-5.0.2.

Bharat G
la source

Réponses:

7

Dans une application de terminal sur Android, entrez (nécessite un accès root):

su
am stop-user USER_ID

Par exemple, pour un utilisateur invité, son USER_IDdans mon appareil est 11ainsi la commande serait am stop-user 11.

am stop-user ne traite pas les entrées multiples, vous devez donc exécuter la commande pour chaque utilisateur secondaire que vous souhaitez suspendre.

C'est un peu différent du redémarrage de l'appareil. Si vous vérifiez aml'utilisation que vous verriez,

am stop-user: stop execution of USER_ID, not allowing it to run any code until a later explicit start or switch to it.

Comme indiqué, cela met simplement en pause toutes les activités associées à ce compte d'utilisateur, donc chaque fois qu'un démarrage ou un changement explicite est fourni, votre session reprendra plutôt que de recommencer à zéro.

Pour confirmer que l'utilisateur a bien mis en pause ou n'est pas en cours d'exécution, consultez ma réponse pour savoir comment trouver le nom d'utilisateur / ID en cours d'exécution à partir d'ADB ?

En bref, pm list usersou dumpsys activityvous dirait si l'utilisateur est RUNNINGou SHUTDOWN. Cette dernière commande est meilleure. Si la session utilisateur est effectivement interrompue par am stop-user, vous verriez mState=SHUTDOWNpour cet utilisateur. Cependant, si l'utilisateur n'a pas été activé une seule fois depuis le redémarrage, vous ne verrez aucune de ses entrées.

Seigneur du feu
la source
comme je l'ai dit am stopuser 10ne montrait que la pm list userscommande en tant qu'utilisateur ne fonctionnant pas. J'ai vérifié adb shell psaprès am stop-user 10et je peux trouver des u10_axxprocessus en cours d'exécution. Pour vérifier s'ils sont arrêtés, j'ai essayé d'exécuter un script shell dans un terminal sur le 2ème utilisateur. Le script boucle une instruction echo chaque seconde (affichant la seconde). Après avoir démarré ce script, utilisé la am stop-user 10commande, attendu 5min et relancé la 2ème session utilisateur, je peux dire que le script n'est pas arrêté. Il a fonctionné pendant tout le temps.
Bharat G
La méthode que j'ai utilisée pour installer des applications (terminal) dans le 2ème utilisateur d'Android 5.0.2 est par adb install -r app.apk. Je ne sais pas si c'est le problème.
Bharat G
Je vous mettrai à jour si j'obtiens quelque chose de pertinent pour vos commentaires.
Firelord
1
J'ai vérifié la même commande sur l'appareil d'un ami android-5.1.1et cela a fonctionné comme indiqué. Je n'ai pas vérifié la partie du script, mais lors de l'émission am stop-user 10, tous les processus du 2ème utilisateur ont été tués et ne sont pas répertoriés dans Settings > Appsou avec la pscommande. Donc, c'est le chemin, mais android-5.0.2est actuellement soit buggé avec cette commande, ou une telle fonctionnalité n'est pas implémentée à partir de cette version, je suppose. Mais 5.1 a encore des bogues intolérables pour moi. Merci :)
Bharat G