android多用户下应用安装详解三(特殊需求实现)

     前两篇已经对新应用安装和开机加载应用安装信息的流程做了详细梳理,下面来看一个需求。在说这个需求之前,我们了解一个背景:多用户下,如果使用adb install xxx.apk的话,会导致全用户安装。聪明的读者可能就知道了,这实际上破坏了多用户的独立性。而我所在的项目即利用到了多用户,这显然不能让人接受,尤其是很多pc上的android应用安装工具,会直接把一些应用安装到另外一个用户里。实际上这也是我调研这个问题的原因。

   下面来分析全用户安装的原因:

  1.  packagemanagerservice安装入口installPackageWithVerificationAndEncryption()里:

           UserHandle user;
        if ((flags&PackageManager.INSTALL_ALL_USERS) != 0) {
            user = UserHandle.ALL;          
        } else {
            user = new UserHandle(UserHandle.getUserId(uid));
        }

       看到这里,可以大致猜测就是这个UserHandle.ALL导致的全用户安装的,实际的情况也确实是这样的,在层层传递之后,会进入com.android.server.pm.Settings.getPackageLPw(): 有一段逻辑是这样的:

              List<UserInfo> users = g

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值