Вихід із сеансу на пристрої з кількома користувачами?


10

Існує можливість перемикатися між користувачами, але немає можливості вийти з активного сеансу користувача. Фонові програми та сервіси для неактивних користувачів (після входу та вимкнення) продовжують заряджати акумулятор.

Єдиний спосіб, на який я думаю, - це перезавантажити пристрій, а не входити в систему користувача.

Отже, чи може власник примусити наступних неактивних користувачів вийти з сеансу? Я маю доступ до власника суперкористувача android-5.0.2.

Відповіді:


7

У термінальному додатку на Android введіть (вимагає кореневого доступу):

su
am stop-user USER_ID

Напр. Для гостя, його USER_IDна моєму пристрої є 11така команда am stop-user 11.

am stop-user не обробляє багаторазове введення, тому вам потрібно виконати команду для кожного другого користувача, якого ви хочете призупинити.

Це трохи відрізняється від перезавантаження пристрою. Якщо ви перевірите amвикористання, яке б ви побачили,

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

Як було сказано, він просто призупиняє всі дії, пов’язані з цим обліковим записом користувача, тому щоразу, коли буде передбачено явний запуск або перемикання, ваш сеанс поновлюється, а не починається з нуля.

Для підтвердження того, що користувач дійсно призупинився або не працює, дивіться мою відповідь на тему Як дізнатися поточне ім’я користувача / ідентифікатор від ADB ?

Коротко, pm list usersабо dumpsys activityскажу, чи є користувач, RUNNINGчи SHUTDOWN. Остання команда краще. Якщо сеанс користувача справді припинено am stop-user, ви побачите mState=SHUTDOWNцього користувача. Однак, якщо користувач не був активований жодного разу після перезавантаження, ви не побачите жодного його запису.


як я сказав, am stopuser 10показував лише pm list usersкоманду, оскільки користувач не працює. Я перевірив adb shell psпісля am stop-user 10і можу знайти u10_axxпроцеси, що працюють. Щоб перевірити, чи вони зупинені, я спробував запустити скрипт оболонки в терміналі для другого користувача. Сценарій циклічно повторює оператор ехо (що відображає секунду). Після запуску цього скрипту, використовуючи am stop-user 10команду, чекаючи 5 хвилин і повторного запуску 2-го сеансу користувача, я можу сказати, що сценарій не зупинений. Це бігало весь час.
Бхарат G

Метод, який я використовував для встановлення додатків (терміналу) у другого користувача Android 5.0.2, розроблено adb install -r app.apk. Не знаю, чи це проблема.
Бхарат G

Я поінформую вас, якщо отримаю щось відповідне вашим коментарям.
Firelord

1
Я перевірив ту саму команду на пристрої друга, android-5.1.1і вона працювала, як зазначено. Я не перевірив частину сценарію, але при видачі am stop-user 10всі процеси 2-го користувача загинули і не перераховані в команді Settings > Appsабо з нею ps. Отже, це так, але в android-5.0.2даний час або баггі з цією командою, або така функціональність не реалізована, як у цій версії, я думаю. Але 5.1 має більше нестерпних помилок для мене, поки не потрібно переходити. Дякую :)
Bharat G
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.