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

How to know multiple users configured in device?

Android 4.2 及更高版本支持多个用户,如下所述 link...

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();