Logout della sessione sul dispositivo con più utenti?


10

C'è un'opzione per passare da un utente all'altro, ma non esiste un'opzione per disconnettersi da una sessione utente attiva. Le app e i servizi in background per gli utenti inattivi (dopo aver effettuato l'accesso e disconnesso) continuano a scaricarsi.

L'unico modo in cui penso è riavviare il dispositivo e non accedere all'utente.

Quindi, c'è un modo in cui il proprietario può costringere gli utenti inattivi successivi a disconnettersi dalla loro sessione? Ho accesso da superutente al proprietario con android-5.0.2.

Risposte:


7

In un'app terminale su Android, immettere (richiede l'accesso root):

su
am stop-user USER_ID

Ad esempio, per un utente Ospite, è USER_IDnel mio dispositivo è 11quindi il comando sarebbe am stop-user 11.

am stop-user non elabora più input, quindi devi eseguire il comando per ogni utente secondario che desideri mettere in pausa.

Questo è leggermente diverso dal riavvio del dispositivo. Se controlli aml'uso che vedresti,

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

Come detto, interrompe semplicemente tutte le attività associate a quell'account utente, quindi ogni volta che viene fornito un avvio o uno switch esplicito la sessione riprenderà anziché iniziare da zero.

Per la conferma che l'utente ha effettivamente messo in pausa o non è in esecuzione, vedere la mia risposta per Come scoprire il nome utente / ID attualmente in esecuzione da ADB ?

In breve, pm list userso dumpsys activityti dirò se l'utente è RUNNINGo SHUTDOWN. Quest'ultimo comando è migliore. Se la sessione utente viene effettivamente interrotta am stop-user, vedresti mState=SHUTDOWNquell'utente. Tuttavia, se l'utente non è stato attivato nemmeno una volta dal riavvio, non vedresti nessuna delle sue voci.


come ho detto, am stopuser 10mostrava solo il pm list userscomando come utente non in esecuzione. Ho controllato adb shell psdopo am stop-user 10e posso trovare i u10_axxprocessi in esecuzione. Per verificare se sono stati arrestati, ho provato a eseguire uno script di shell in un terminale sul secondo utente. Lo script esegue un ciclo un'istruzione echo ogni secondo (visualizzato secondo). Dopo aver avviato questo script, utilizzando il am stop-user 10comando, aspettando 5 minuti e riavviando la seconda sessione utente, posso dire che lo script non viene arrestato. Funzionò per tutto il tempo.
Bharat G,

Il metodo che ho usato per l'installazione di app (terminale) nel secondo utente di Android 5.0.2 è di adb install -r app.apk. Non so se questo è il problema.
Bharat G,

Ti aggiornerò se ricevo qualcosa di rilevante per i tuoi commenti.
Firelord

1
Ho controllato lo stesso comando sul dispositivo di un amico con android-5.1.1e ha funzionato come indicato. Non ho controllato la parte dello script, ma al momento dell'emissione am stop-user 10, tutti i processi del secondo utente sono stati interrotti e non sono elencati in Settings > Appso con pscomando. Quindi, è il modo, ma android-5.0.2attualmente o è difettoso con questo comando, o tale funzionalità non è implementata a partire da quella versione immagino. Ma 5.1 ha ancora bug più intollerabili da cambiare. Grazie :)
Bharat G
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.