源码如下:
frameworks/base/core/java/android/os/UserManager.java
/**
* Returns whether this device supports multiple users with their own login and customizable
* space.
* @return whether the device supports multiple users.
*/
public static boolean supportsMultipleUsers() {
return getMaxSupportedUsers() > 1
&& SystemProperties.getBoolean("fw.show_multiuserui",
Resources.getSystem().getBoolean(R.bool.config_enableMultiUserUI));
}
/**
* Returns the maximum number of users that can be created on this device. A return value
* of 1 means that it is a single user device.
* @hide
* @return a value greater than or equal to 1
*/
@UnsupportedAppUsage
public static int getMaxSupportedUsers() {
// Don't allow multiple users on certain builds
if (android.os.Build.ID.startsWith("JVP")) return 1;
return SystemProperties.getInt("fw.max_users",
Resources.getSystem().getInteger(R.integer.config_multiuserMaximumUsers));
}
配置多用户模式的开启和关闭
需要通过overlay的方式修改framework/base/core/res/res/values/config.xml的“config_multiuserMaximumUsers”和"config_enableMultiUserUI"参数
<!-- Maximum number of supported users -->
<integer name="config_multiuserMaximumUsers">1</integer>
<!-- Whether Multiuser UI should be shown -->
<bool name="config_enableMultiUserUI">false</bool>
config_multiuserMaximumUsers
当为1时,表示不支持多用户;当大于1时,表示支持多用户的最大个数
config_enableMultiUserUI
当为false时,多用户功能处于停用状态;当为true时,多用户功能处于启用状态
APP层获取多用户的相关参数:
方法名 | 返回数据 |
---|---|
UserManager.supportsMultipleUsers() | 是否支持多用户 |
UserManager.getMaxSupportedUsers() | 获取支持的多用户的最大个数 |
UserManager.getUserName() | 获取当前用户的名称 |
UserManager.getUserHandle() | 获取当前用户的id |
参考文档: https://source.android.google.cn/devices/tech/admin/multi-user#applying_the_overlay