android-PMS-创建新用户流程
Android PMS(Package Manager Service)创建新用户的流程涉及系统服务和权限管理,核心步骤如下:
🔑 一、权限校验与初始化
-
申请权限
调用方需具备MANAGE_USERS
系统权限,并在AndroidManifest.xml
声明:<uses-permission android:name="android.permission.MANAGE_USERS" />
-
获取
UserManager
服务
通过系统服务初始化UserManager
对象:UserManager userManager = (UserManager) context.getSystemService(Context.USER_SERVICE);
👤 二、创建新用户
-
调用创建接口
使用createUser()
或createProfileForUser()
创建用户:// 创建独立用户 UserHandle newUser = userManager.createUser("新用户名", UserInfo.FLAG_FULL);// 创建关联用户(如工作资料) UserHandle profile = userManager.createProfileForUser("工作资料", UserInfo.FLAG_MANAGED_PROFILE, mainUserId);
-
用户类型与权限标识
UserInfo.FLAG_FULL
:标准用户(完整权限)UserInfo.FLAG_RESTRICTED
:受限用户UserInfo.FLAG_MANAGED_PROFILE
:工作资料(关联主用户上下文)
三、PMS 数据处理流程
-
用户目录初始化
PMS 自动创建用户专属数据目录:/data/user/<userId>
:应用私有数据存储/data/media/<userId>
:媒体文件存储
-
系统应用克隆
为新用户复制系统应用数据:- 扫描
/system/app
、/system/priv-app
等目录 - 为每个系统应用生成独立数据副本
- 扫描
-
权限配置同步
PMS 将主用户的权限规则同步至新用户环境:userManager.setApplicationRestrictions(packageName, newUser, restrictionsBundle);
🔄 四、用户切换(可选)
调用 ActivityManager
切换到新用户:
ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
am.switchUser(newUser.getIdentifier());
️ 五、关键注意事项
-
特权限制:
- 普通应用无法调用
createUser()
,需系统应用或特权进程 - 设备需启用多用户支持(
userManager.supportsMultipleUsers()
)
- 普通应用无法调用
-
数据隔离机制:
- 应用安装时 PMS 为每个用户生成独立 UID
- 跨用户数据访问需声明
INTERACT_ACROSS_USERS
权限
-
系统兼容性:
- Android 5.0+ 支持托管配置文件(Managed Profile)
- Android 9+ 优化了用户创建的异步处理逻辑
📊 执行流程图
graph LR
A[调用 createUser()] --> B{PMS 初始化}
B --> C[创建用户目录 /data/user/<userId>]
C --> D[克隆系统应用数据]
D --> E[同步权限配置]
E --> F[注册用户至 Settings 数据库]
F --> G[触发 USER_ADDED 广播]
G --> H[可选切换用户]
引用链接:
1.Android 系统(239)—Android PMS的创建过程 - CSDN博客
2.android系统 pms详解 - CSDN博客
3.测试多用户 | Android Open Source Project - Android
4.Android PM 创建 User - 51CTO博客
5.Android Framework 框架系列之 PackageManagerService - 博客园
6.添加用户的流程分析 - 博客园
7.彻底搞明白PMS原理 - CSDN博客
8.Android 9.x 多用户机制 1 #Profile user创建过程 - CSDN博客
9.android 创建用户 切换用户 - 51CTO博客
10.Android12 增加user - 51CTO博客
11.智能酒店PMS操作全解析:从注册到添加房型 - 悲凉染江山
12.android 用户添加 安卓新建用户 - 51CTO博客
13.创建Android应用-创建应用-创建项目和应用-AppGallery Connect(HarmonyOS 3.1/4.0及以下) - 华为HarmonyOS开发者 - 华为开发者联盟
14.Android 应用程序安装流程解析 - 掘金开发者社区
15.深入解析 Android PMS —— APK 安装与解析全流程 - CSDN博客
16.Android 如何创建一个用户 - 51CTO博客
17.开始使用一键登录和注册 | Identity | Android Developers - Google
18.Wear OS - Android
19.Android PMS——应用安装流程介绍(五) - CSDN下载
20.开发者指南 - Android
21.Android PMS应用安装流程源码分析下篇-安装包校验及安装 - 掘金开发者社区
22.App出海上架安卓谷歌市场 - 大山 出海资源
23.Android账户管理系统课程设计项目 - CSDN博客