Hide-My-Applist
Hide-My-Applist copied to clipboard
Added limited multi-user support (via root)
Fix for https://github.com/Dr-TSNG/Hide-My-Applist/issues/81
相比 https://github.com/Dr-TSNG/Hide-My-Applist/pull/266 更接近原生的多用户管理(并且会显示工作资料小图标),但是目前由于核心功能不支持多用户,获取到的userId暂且没用。
具体做法:
- 通过pm list users获取用户列表。
- 通过
pm grant ${pkgName} android.permission.INTERACT_ACROSS_USERS
让HMA获取特殊权限。 - 通过Hidden API
getInstalledPackagesAsUser
获取指定用户下的所有应用。
1和2运行时均需要root权限,可能需要在UI上添加对应提示,以及调整授权的时机。
在系统服务里面向 app 暴露个 api 获取所有用户的包就行了,哪用那么麻烦
在系统服务里面向 app 暴露个 api 获取所有用户的包就行了,哪用那么麻烦
系统服务还是尽量别hook,鬼知道那些定制UI内部加了些什么东西。
感谢提交这个功能,我现在使用工作账户正好需要这个。 我合并这个提交,编译后发现一开始不能正常识别工作账户里的应用,后来发现是代码里默认不尝试授予INTERACT_ACROSS_USERS这个权限(函数默认参数是否),我手动授予后就正常工作了。
感谢提交这个功能,我现在使用工作账户正好需要这个。 我合并这个提交,编译后发现一开始不能正常识别工作账户里的应用,后来发现是代码里默认不尝试授予INTERACT_ACROSS_USERS这个权限(函数默认参数是否),我手动授予后就正常工作了。
是这样吗?我是在读取应用列表时写了个检测,如果没有权限就使用root自动添加权限。
好像是的。我看您在158行这里 fun getInstalledPackagesFromUser(user: Int, tryGrantPermission: Boolean = false): List<PackageInfo> { 给的tryGrantPermission默认参数是false。然后170-173行 if (tryGrantPermission) { grantCrossUserPermissions() return getInstalledPackagesFromUser(user) } 这里调的时候没有给参数。
好像是的。我看您在158行这里 fun getInstalledPackagesFromUser(user: Int, tryGrantPermission: Boolean = false): List { 给的tryGrantPermission默认参数是false。然后170-173行 if (tryGrantPermission) { grantCrossUserPermissions() return getInstalledPackagesFromUser(user) } 这里调的时候没有给参数。
似乎是调试的时候修改了,没有改回去。
Hello 👋 I can't use Hma On other users on Google pixel
感谢提交这个功能,我现在使用工作账户正好需要这个。 我合并这个提交,编译后发现一开始不能正常识别工作账户里的应用,后来发现是代码里默认不尝试授予INTERACT_ACROSS_USERS这个权限(函数默认参数是否),我手动授予后就正常工作了。
请问目前具体如何使用呢?我在编译安装此分支后尝试过在adb shell中pm grant com.tsng.hidemyapplist android.permission.INTERACT_ACROSS_USERS
,但是仍然未改变可配置的应用。以及是否有必要在工作空间中也安装一份?
感谢提交这个功能,我现在使用工作账户正好需要这个。 我合并这个提交,编译后发现一开始不能正常识别工作账户里的应用,后来发现是代码里默认不尝试授予INTERACT_ACROSS_USERS这个权限(函数默认参数是否),我手动授予后就正常工作了。
请问目前具体如何使用呢?我在编译安装此分支后尝试过在adb shell中
pm grant com.tsng.hidemyapplist android.permission.INTERACT_ACROSS_USERS
,但是仍然未改变可配置的应用。以及是否有必要在工作空间中也安装一份?
这个只需要在主用户中安装。之前测试的时候使用的是安卓12,没有对安卓12以上的系统进行测试。