如何通过锁屏密码在Android设备中切换不同用户账户
通过锁屏密码实现Android多用户切换的方案说明
通用实现逻辑
- 底层依托Android原生自带的多用户管理框架,核心涉及两个系统服务接口:
UserManager(用户管理)、LockSettingsService(锁屏密码校验) - 核心逻辑是修改锁屏校验流程:在原有仅校验当前活跃用户密码的逻辑之前,新增遍历所有已创建非访客用户的密码哈希值的步骤,输入的密码和哪个用户的密码哈希匹配成功,就直接调用系统用户切换API跳转到对应用户,不需要先解锁当前用户再手动选择切换入口
- 所有密码校验步骤都在TEE可信执行环境中完成,和原生锁屏校验的安全等级一致,不会出现密码明文泄露的问题,MIUI的该功能就是基于这套逻辑做的定制开发,额外增加了重复密码的冲突处理规则:如果多个用户设置了相同的锁屏密码,默认优先解锁当前活跃用户,也支持手动切换到其他匹配到的用户
第三方Android系统适配方案
系统级ROM适配(稳定性最高)
- 适配前提:系统本身未阉割多用户功能,若默认关闭多用户,需先修改
frameworks/base/core/res/res/values/config.xml中的config_enableMultiUserUI配置项为true - 具体修改点:修改SystemUI模块下Keyguard锁屏组件的密码校验逻辑,在当前用户密码校验分支前新增全用户密码匹配逻辑,匹配成功后调用
UserManager.switchUser()执行用户切换 - 权限要求:需要给锁屏应用配置
android.permission.MANAGE_USERS、android.permission.INTERACT_ACROSS_USERS_FULL两个系统级权限,且应用必须使用系统签名
无root免改系统适配
- 可以通过adb给第三方多用户管理工具授予
android.permission.MANAGE_USERS权限,工具后台监听锁屏输入事件,密码匹配成功后调用系统切换接口 - 该方案不需要修改ROM,但稳定性较低,部分系统会限制后台输入事件监听权限,存在匹配失败的可能
内容的提问来源于stack exchange,提问作者anuraag
相关产品推荐
相关产品推荐

