Sitzungsabmeldung auf einem Gerät mit mehreren Benutzern?

10

Es gibt eine Option zum Wechseln zwischen Benutzern, aber keine Option zum Abmelden von einer aktiven Benutzersitzung. Die Hintergrund-Apps und -Dienste für inaktive Benutzer (einmal angemeldet und ausgeschaltet) werden weiterhin leer.

Der einzige Weg, den ich denke, ist, das Gerät neu zu starten und den Benutzer nicht anzumelden.

Gibt es eine Möglichkeit, wie der Eigentümer nachfolgende inaktive Benutzer zwingen kann, sich von ihrer Sitzung abzumelden? Ich habe Superuser-Zugriff auf den Besitzer mit android-5.0.2.

Bharat G.
quelle

Antworten:

7

Geben Sie in einer Terminal-App unter Android Folgendes ein (Root-Zugriff erforderlich):

su
am stop-user USER_ID

ZB für einen Gastbenutzer ist es USER_IDin meinem Gerät 11so, dass der Befehl wäre am stop-user 11.

am stop-user verarbeitet keine Mehrfacheingaben, daher müssen Sie den Befehl für jeden sekundären Benutzer ausführen, den Sie anhalten möchten.

Dies unterscheidet sich etwas vom Neustart des Geräts. Wenn Sie die Verwendung überprüfen am, sehen Sie,

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

Wie gesagt, es werden einfach alle Aktivitäten angehalten, die diesem Benutzerkonto zugeordnet sind. Wenn also ein expliziter Start oder Wechsel vorgesehen ist, wird Ihre Sitzung fortgesetzt, anstatt von vorne zu beginnen.

Eine Bestätigung, dass der Benutzer tatsächlich angehalten hat oder nicht ausgeführt wird, finden Sie in meiner Antwort unter Wie kann ich herausfinden, wie der Benutzername / die ID derzeit von ADB ausgeführt wird ?

Kurz pm list usersoder dumpsys activitywürde Ihnen sagen, ob der Benutzer ist RUNNINGoder SHUTDOWN. Der letztere Befehl ist besser. Wenn die Benutzersitzung tatsächlich angehalten wird am stop-user, würden Sie mState=SHUTDOWNfür diesen Benutzer sehen. Wenn der Benutzer jedoch seit dem Neustart nicht einmal aktiviert wurde, wird kein Eintrag angezeigt.

Feuerlord
quelle
Wie gesagt, es am stopuser 10wurde nur der pm list usersBefehl als Benutzer angezeigt, der nicht ausgeführt wurde. Ich habe adb shell psnach am stop-user 10und finden u10_axxlaufenden Prozesse. Um zu überprüfen, ob sie angehalten wurden, habe ich versucht, ein Shell-Skript in einem Terminal des 2. Benutzers auszuführen. Das Skript wiederholt jede Sekunde eine Echoanweisung (zeigt die Sekunde an). Nachdem am stop-user 10ich dieses Skript mit dem Befehl gestartet, 5 Minuten gewartet und die zweite Benutzersitzung neu gestartet habe, kann ich sagen, dass das Skript nicht angehalten wird. Es lief die ganze Zeit.
Bharat G
Die Methode, die ich für die Installation von Apps (Terminal) in 2. Benutzer von Android 5.0.2 verwendet habe, ist von adb install -r app.apk. Ich weiß nicht, ob das das Problem ist.
Bharat G
Ich werde Sie aktualisieren, wenn ich etwas für Ihre Kommentare relevantes bekomme.
Feuerlord
1
Ich habe den gleichen Befehl auf dem Gerät eines Freundes mit überprüft android-5.1.1und es hat wie angegeben funktioniert. Ich habe den Skriptteil nicht überprüft, aber beim Ausgeben am stop-user 10wurden alle Prozesse des 2. Benutzers abgebrochen und sind nicht in Settings > Appsoder mit psBefehl aufgeführt. So ist es übrigens, aber android-5.0.2derzeit ist es entweder fehlerhaft mit diesem Befehl oder eine solche Funktionalität ist ab dieser Version nicht mehr implementiert, denke ich. Aber 5.1 hat noch unerträglichere Fehler, die ich noch wechseln muss. Vielen Dank :)
Bharat G