Android 修改framework实现 全局唯一launcher

        在网上找了好久唯一launcher的实现方式,发现都是一同一个人写的,而且并没有实现这个功能,因为按照这个方式去做的话,当你按下HOME键还是出现了选择launcher的对话框,然后自己研究了一天,找到了最直接有效的而且是最简单的方法实现全局唯一launcher的功能:

        

        修改frameworks\base\core\java\android\content\pm\PackageParser.java,在parseIntent这个私有方法,因为APK在安装的时候会通过这个方法解析Manifest清单文件,然后将每个Activity的intent-filter保存在内存中,所以修改这个方法就相当于修改了内存的应用注册表的信息,也就是偷换概念的做法,等于是在安装的时候就把问题解决了,扼杀在萌芽状态:


       修改部分为:

        这里xxx随便你输入,例如你在你自己的launcher的Manifest的Activity里Intent-filter里加入:

        

<category android:name="android.intent.category.HOME.xxx" />


        那么在代码里修改的地方的xxx就替换成你自己起的名字

        原理就是安装每个APK的时候 只要是launcher ,就把category是HOME的值改成x,只要是你的launcher就把category的值改成HOME,那么全局就只有你一个launcher了


        这里是修改的部分:

/*************************************************************************************/
                if(Intent.CATEGORY_HOME.equals(value)) {
                	value = "x";
                } else if((Intent.CATEGORY_HOME + ".xxx").equals(value)) {
                	value = Intent.CATEGORY_HOME;
                }
                

/*************************************************************************************/

使用这种方法修改时必须确保你的launcher被安装了或者放在了syste/app下了且Manifest的Activity里的i
  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值