我们可以在Android设备上创建多个用户和配置文件,例如,有一个主用户,我还设置了一个名为"工作配置文件"的工作配置文件。
使用以下 adb 命令:
adb shell pm list users
我得到这个结果:
用户信息{0:我的用户:13} 正在运行 用户信息{10:工作配置文件:30} 正在运行
很好,我可以看到我的用户信息上面有"工作配置文件"的名称。现在,我想从我的应用程序中获取此列表。
我尝试使用此代码:
for(Account account: AccountManager.get(this).getAccounts()) {
DebugLog.e("COUCOU " + account.name + " " + account.toString());
}
但工作配置文件帐户未显示在列表中。只有主用户...知道我如何获得与 ADB shell 命令相同的列表吗?
您将用户与帐户混淆了。您正在使用的内容只会为您提供当前用户的帐户。
一个设备可以有多个用户,相当于计算机上的用户。
一个用户可以拥有多个帐户,即Gmail,Facebook,Twitter等。这些帐户可以在用户之间共享,也可以不共享。
有关该主题的更多信息,请查看有关支持多个用户的官方页面。
您可以使用UserManager处理用户,也可以使用getUserProfiles获取当前用户的配置文件列表,但是您将获得一个UserHandle(可用于获取userId),如何获取所有用户的列表,名称是我尚未发现的,但是在最坏的情况下,您可以使用shell命令pm, 如这篇关于 Android 上的多个用户帐户的文章所示。
如果您拥有设备的根访问权限,或者能够将应用构建为系统特权应用程序,则可以使用特权权限白名单来获取android.permission.MANAGE_USERS
权限(这也要求您使用平台签名对应用程序进行签名)。然后,您可以通过使用 Java 反射调用 UserManager.getUsers()
来获取所有用户信息的列表。