Sitzungsabmeldung auf Gerät mit mehreren Benutzern?

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 abgemeldet) laufen weiter und belasten den Akku.

Ich denke, die einzige Möglichkeit besteht darin, das Gerät neu zu starten und den Benutzer nicht anzumelden.

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

Gibt es keine GUI-Methode?

Antworten (1)

Geben Sie in einer Terminal-App auf Android (erfordert Root-Zugriff) Folgendes ein:

su
am stop-user USER_ID

Für einen Gastbenutzer ist es beispielsweise USER_IDin meinem Gerät 11so, dass der Befehl am stop-user 11.

am stop-userverarbeitet 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 amNutzung von überprüfen, 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 hält einfach alle Aktivitäten an, die mit diesem Benutzerkonto verbunden sind, sodass Ihre Sitzung immer dann fortgesetzt wird, wenn ein expliziter Start oder Wechsel erfolgt, anstatt von vorne zu beginnen.

Zur Bestätigung, dass der Benutzer tatsächlich angehalten hat oder nicht ausgeführt wird, siehe meine Antwort für Wie finde ich den aktuell laufenden Benutzernamen/die ID von ADB heraus ?

Kurz gesagt, pm list usersoder dumpsys activitywürde Ihnen sagen, ob der Benutzer RUNNINGoder ist SHUTDOWN. Der letztere Befehl ist besser. Wenn die Benutzersitzung tatsächlich von 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, sehen Sie keinen seiner Einträge.

Wie ich schon sagte, am stopuser 10wurde nur der pm list usersBefehl als Benutzer angezeigt, der nicht ausgeführt wird. adb shell psIch habe danach nachgesehen am stop-user 10und kann u10_axxProzesse finden, die ausgeführt werden. Um zu überprüfen, ob sie angehalten sind, habe ich versucht, ein Shell-Skript in einem Terminal für den 2. Benutzer auszuführen. Das Skript wiederholt jede Sekunde eine Echo-Anweisung (zeigt Sekunde an). Nachdem ich dieses Skript gestartet habe, den am stop-user 10Befehl verwendet, 5 Minuten gewartet und die zweite Benutzersitzung neu gestartet habe, kann ich sagen, dass das Skript nicht angehalten wurde. Es lief die ganze Zeit.
Die Methode, die ich zum Installieren von Apps (Terminal) im zweiten Benutzer von Android 5.0.2 verwendet habe, ist by adb install -r app.apk. Weiß nicht, ob es daran liegt.
Ich werde Sie auf dem Laufenden halten, wenn ich etwas Relevantes zu Ihren Kommentaren erfahre.
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 zweiten Benutzers beendet und sind nicht in Settings > Appsoder mit dem psBefehl aufgeführt. So ist es also, aber android-5.0.2derzeit ist dieser Befehl entweder fehlerhaft, oder eine solche Funktionalität ist ab dieser Version nicht implementiert, denke ich. Aber 5.1 hat noch mehr unerträgliche Bugs für mich umzustellen. Danke dir :)