【问题标题】:Android - Get list of users and profile nameAndroid - 获取用户列表和个人资料名称
【发布时间】:2016-05-28 04:17:34
【问题描述】:

我们可以在Android设备上创建多个用户和配置文件,例如,有一个主用户,我还设置了一个名为“工作配置文件”的工作配置文件。

使用以下 adb 命令:

adb shell pm list users

我得到了这个结果:

UserInfo{0:My User:13} 正在运行 UserInfo{10:Work Profile:30} 正在运行

很好,我可以看到我的用户信息,上面有名称工作资料。 现在,我想从我的应用程序中获取此列表。

我尝试使用此代码:

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

但工作资料帐户未显示在列表中。只有主要用户... 知道如何获得与 ADB shell 命令相同的列表吗??

【问题讨论】:

  • 没人?这将非常有用。

标签: android user-profile profile-owner


【解决方案1】:

您将用户与帐户混淆了。您正在使用的内容只会让您获得当前用户的帐户。

一个设备可以有多个用户,相当于一台计算机上的用户。

一个用户可以有多个帐户,例如 Gmail、Facebook、Twitter 等。这些帐户可以在用户之间共享,也可以不共享。

有关该主题的更多信息,请查看the official page on Supporting Multiple Users

您可以使用UserManager 处理用户,并且您可以使用getUserProfiles 获取当前用户的配置文件列表,但您会得到一个UserHandle(您可以使用它来获取userId) ,如何获取所有用户的列表和名字是我还没弄明白的,不过最坏的情况下可以使用shell命令pm,如post about Multiple user accounts on Android所示。

【讨论】:

    【解决方案2】:

    如果您对您的设备具有root访问权限,或者您能够将您的应用程序构建为系统特权应用程序,您可以使用Privileged Permission Whitelisting获得android.permission.MANAGE_USERS权限(这也需要您sign your app with the platform signature) .然后,您可以通过使用 Java 反射调用 UserManager.getUsers() 来获取所有 UserInfos 的列表。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-27
      • 2022-06-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多