Android - Получить список пользователей и имя профиля

Мы можем создать несколько пользователей и профилей на устройствах Android, например, есть Основной пользователь, и я также установил Рабочий Профиль с именем "Рабочий Профиль".

Используя следующую команду adb:

adb shell pm list users

Я получаю этот результат:

UserInfo {0: Мой пользователь:13} запущен UserInfo{10: Рабочий профиль:30} запущен

Хорошо, я вижу свою информацию о пользователе с именем Рабочий профиль. Теперь я хочу получить этот список из моего приложения.

Я пытался использовать этот код:

for(Account account: AccountManager.get(this).getAccounts()) {
        DebugLog.e("COUCOU " + account.name + " " + account.toString());
    }

Но учетная запись рабочего профиля не отображается в списке. Только основной пользователь... Любая идея, как я мог получить тот же список, что и команда оболочки ADB??

1 ответ

Вы путаете пользователей с аккаунтами. То, что вы используете, получит только учетные записи текущего пользователя.

Устройство может иметь несколько пользователей, которые эквивалентны пользователям на компьютере.

Пользователь может иметь несколько учетных записей, например, Gmail, Facebook, Twitter и т. Д. Учетные записи могут совместно использоваться пользователями или нет.

Для получения дополнительной информации по этой теме, посетите официальную страницу поддержки нескольких пользователей.

Вы можете обрабатывать пользователей с помощью UserManager, и вы можете получить список профилей текущего пользователя, используя getUserProfiles, но вы получите UserHandle (который вы можете использовать для получения userId), как получить список всех пользователей и имя это то, что я еще не узнал, но в худшем случае вы можете использовать команду оболочки pm, как показано в этом посте о многопользовательских учетных записях на Android.

Если у вас есть root-доступ к вашему устройству или вы можете создать свое приложение как системное привилегированное приложение, вы можете использовать белый список привилегированных разрешений, чтобы получить android.permission.MANAGE_USERS разрешение (которое также требует подписи вашего приложения с подписью платформы). Затем вы можете получить список всех пользовательских данных, позвонив UserManager.getUsers() используя отражение Java.

Другие вопросы по тегам