10 votes

Déconnexion de la session sur un appareil avec plusieurs utilisateurs?

Il y a une option pour passer d'un utilisateur à un autre, mais il n'y a pas d'option pour se déconnecter d'une session active. Les applications en arrière-plan et les services pour les utilisateurs inactifs (une fois connectés puis passés à un autre) continuent de s'exécuter et de vider la batterie.

La seule manière que je pense, est de redémarrer l'appareil et de ne pas connecter l'utilisateur.

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

0 votes

N'y a-t-il pas de méthode GUI?

7voto

Firelord Points 23064

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

su
am stop-user ID_UTILISATEUR

Par exemple, pour un utilisateur Invité, son ID_UTILISATEUR sur mon appareil est 11 donc la commande serait am stop-user 11.

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

C'est un peu différent de redémarrer l'appareil. Si vous consultez l'utilisation de am, vous verrez :

am stop-user : arrête l'exécution de l'ID_UTILISATEUR, l'empêchant d'exécuter du code jusqu'à un démarrage explicite ultérieur ou un basculement vers celui-ci.

Comme mentionné, cela met simplement en pause toutes les activités associées à ce compte utilisateur, donc à chaque démarrage explicite ou basculement, votre session reprendra plutôt que de recommencer à zéro.

Pour confirmer que l'utilisateur est effectivement mis en pause ou ne fonctionne pas, consultez ma réponse pour Comment connaître le nom/ID de l'utilisateur actuellement en cours d'exécution depuis ADB ?

En bref, pm list users ou dumpsys activity vous dira si l'utilisateur est RUNNING ou SHUTDOWN. La dernière commande est meilleure. Si la session utilisateur est effectivement mise en pause par am stop-user, vous verrez mState=SHUTDOWN pour 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.

0 votes

Comme je l'ai dit am stop-user 10 ne montrait que la commande pm list users car l'utilisateur n'était pas en cours d'exécution. J'ai vérifié adb shell ps après am stop-user 10 et j'ai pu trouver des processus u10_axx 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 déclaration echo toutes les secondes (affichant les secondes). Après le démarrage de ce script, en utilisant la commande am stop-user 10, en attendant 5 minutes et en redémarrant la session du 2ème utilisateur, je peux dire que le script n'est pas arrêté. Il s'est exécuté pendant tout ce temps.

0 votes

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. Ne sais pas si c'est le problème.

0 votes

Je vous tiendrai informé(e) si j'obtiens quelque chose de pertinent par rapport à vos commentaires.

androidalle.com

AndroidAlle est une communauté de androiders où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X