gpt4 book ai didi

android - 如何知道设备中配置的多个用户?

转载 作者:行者123 更新时间:2023-11-29 00:10:02 25 4
gpt4 key购买 nike

Android 4.2 及以上版本支持多个用户,如下链接所述...

http://developer.android.com/about/versions/android-4.2.html#MultipleUsers

现在,我的问题是..

  1. 是否可以通过编程方式了解设备中配置的多个用户?如果是,那么如何获取设备中配置的用户数?

  2. 是否可以获取用户列表?如果是那么怎么办?

最佳答案

有一个公共(public) API 可以获取用户详细信息,但它仅限于具有 "android.permission.MANAGE_USERS" 权限的应用程序。此权限的保护级别为 "signature|system",因此除非您的应用程序安装到系统分区,否则没有官方方法可以获取用户数量。

我查看了源代码并提出了以下解决方案:

public int getNumUsers() {
// The user directory created by android.server.pm.UserManagerService
File userDir = new File(Environment.getDataDirectory(), "user");

// Get the number of maximum users on this device.
int id = Resources.getSystem()
.getIdentifier("config_multiuserMaximumUsers", "integer", "android");
int maxUsers;
if (id != 0) {
maxUsers = Resources.getSystem().getInteger(id);
} else {
maxUsers = 5;
}

int numUsers = 0;
for (int i = 0; i <= maxUsers * 10; i += 10) {
// If a user is created, a directory will be created under /data/user in increments
// of 10. The first user will always be 0.
if (new File(userDir, Integer.toString(i)).exists()) {
numUsers++;
}
}

return numUsers;
}

它在我所做的简短测试中起作用,但未在任何生产代码中使用。它需要更多测试,但应该可以工作。


如果您的应用具有系统级权限,这会容易得多:

UserManager userManager = (UserManager) getSystemService(USER_SERVICE);
int userCount = userManager.getUserCount();

关于android - 如何知道设备中配置的多个用户?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31018677/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com