7

我们可以在 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 命令相同的列表吗?

4

2 回答 2

2

如果您对您的设备具有 root 访问权限,或者您能够将您的应用程序构建为系统特权应用程序,您可以使用Privileged Permission Whitelisting来获取android.permission.MANAGE_USERS权限(这也需要您使用平台签名对您的应用程序进行签名)。然后,您可以通过使用 Java 反射调用来获取所有UserInfo的列表。UserManager.getUsers()

于 2019-01-03T16:44:27.957 回答
2

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

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

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

有关该主题的更多信息,请查看Supporting Multiple Users 的官方页面

您可以使用UserManager处理用户,并且可以使用getUserProfiles获取当前用户的配置文件列表,但是您将获得的是UserHandle(您可以使用它来获取 userId),如何获取所有用户的列表并且名称是我还没有找到的东西,但在最坏的情况下,您可以使用 shell 命令 pm,如这篇关于 Android 上的多个用户帐户的帖子所示。

于 2017-02-22T14:41:57.133 回答