一.前言
做这个需求之前,我在想为啥android为啥没有做个标准的机制,让开发者直接配置个包名就行,找了一圈确实没有标准的机制,没办法就只能自己去做一套这个标准的机制了
二.思路
我第一个思路,首先设置里面我们知道是支持切换Launcher的,那么就去看看设置是如何实现的,设置中默认Launcher实现经过搜索发现在
vendor/mediatek/proprietary/packages/apps/PermissionController/
通过阅读源码发现,默认的相关设置也都在该APP实现,通过实现不同的role
来管理,最后调用在
vendor/mediatek/proprietary/packages/apps/PermissionController/src/com/android/permissioncontroller/role/ui/ManageRoleHolderStateLiveData.java
通过 setRoleHolderAsUser
函数实现,传入roleName和packageName,最终调用到android.app.role.RoleManager addRoleHolderAsU