用户创建是由UMS中的createUser完成的
1.权限校验checkManageUsersPermission
1226 @Override 1227 public UserInfo createUser(String name, int flags) { 1228 checkManageUsersPermission("Only the system can create users"); 1229 return createUserInternal(name, flags, UserHandle.USER_NULL); 1230 }
2.具体创建过程
具体分析:
1.创建前的条件检查,是否有权限,是否低内存,是否超过用户上限...
2.条件满足后,获取用户userId,获取userId,从10开始累加
3.创建用户信息目录
Environment.getUserSystemDirectory(userInfo.id).mkdirs();//创建用户目录/data/system/users/userid/
/**
* Return the system directory for a user. This is for use by system services to store
* files relating to the user. This directory will be automatically deleted when the user
* is removed.
*
* @hide
*/
public static File getUserSystemDirectory(int userId) {
return new File(new File(getSystemSecureDirectory(), "users"), Integer.toString(userId));
}
/**
* Gets the system directory available for secure storage.
* If Encrypted File system is enabled, it returns an encrypted directory (/data/secure/system).
* Otherwise, it returns the unencrypted /data/system directory.
* @return File object representing the secure storage system directory.
* @hide
*/
public static File getSystemSecureDirectory() {
if (isEncryptedFilesystemEnabled()) {
return new File(SECURE_DATA_DIRECTORY, "system");
} else {
return new File(DATA_DIRECTORY, "system");
}
}
这里会判断系统中 EFS 这一功能是否打开. EFS(文件