用户创建是由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 {

这篇博客详细介绍了安卓系统中创建新用户的过程,包括权限校验、用户目录创建、写入用户信息到XML文件以及数据目录的建立。创建过程中涉及Environment.getUserSystemDirectory()和getSystemSecureDirectory()方法,用于判断和创建用户数据存储路径。同时,当用户创建时,系统会为每个用户生成独立的数据目录,确保不同用户间数据隔离。最后,文章提出了关于用户进程创建时机以及数据共享的问题。
最低0.47元/天 解锁文章
890

被折叠的 条评论
为什么被折叠?



