安卓多用户笔记-用户创建

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

用户创建是由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(文件

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值