隐藏图标,不显示指定应用launcher图标

vendor/mediatek/proprietary/packages/apps/Launcher3/ src/com/android/launcher3/model/LoaderTask.java

方法一:(强烈推荐)有的时候第一次刷机无法生效可能服务掉起用重新刷了一遍

在loadAllApps方法中在

for (int i = 0; i < apps.size(); i++) {

                LauncherActivityInfo app = apps.get(i);

加入

if(app.getComponentName().getPackageName().equals("cc.unipro.silentinstaller")) {

                    continue;

                }

如果想要多个应用,就继续往后加 || app.get。。。

关键在于

LauncherActivityInfo  app.getComponentName().getPackageName()

如果到这个应用就跳过这次循环

其他的继续

mBgAllAppsList.add(new AppInfo(app, user, quietMode), app);

当然在对应的apk里面清单文件删掉

<category android:name="android.intent.category.LAUNCHER" />

,只要没有这个category,那这样这个应用就变成系统进程了,无法在设置里面的全部应用里找到,点看系统进程才可以

也行,但是无法再正常启动了,除非用广播接受然后跳转。每次跳转时得加入flag

intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

方法二:(但此方法不适用于有些应用源码里面也动态设置了这个state)(如果是谷歌应用,这么干可能无法开机

在开机之后随便啥地方直接执行,比如说

override/frameworks/base/services/core/java/com/android/server/am/ActivityManagerService.java

finishBooting

中最后加入

mContext.getPackageManager().setComponentEnabledSetting(new ComponentName("com.iflytek.inputmethod","com.iflytek.inputmethod.LauncherActivity"),PackageManager.COMPONENT_ENABLED_STATE_DISABLED,0);

比如也可以在override/frameworks/base/services/core/java/com/android/server/pm/PackageManagerService.java

public void systemReady() {

加入也可以

有些应用不适合如此,比如com.android.stk

vendor/mediatek/proprietary/packages/apps/Stk/ src/com/android/stk/StkAppInstaller.java

就有定义

int state = install ? PackageManager.COMPONENT_ENABLED_STATE_ENABLED

                : PackageManager.COMPONENT_ENABLED_STATE_DISABLED;

然后动态设置pm.setComponentEnabledSetting(cName, state, PackageManager.DONT_KILL_APP);

所以这个就导致开机后把它消掉了,但是安装之后又回来了。

总之当前两种方法都不管用后,有源码的话就直接在清单文件把

<category android:name="android.intent.category.LAUNCHER" />删掉

方法三:

把要隐藏的包名都统一放在array里面,创建个xml文件,注意!此方法remake不生效,找不到R文件,重新new,相当于重新建工程可以

vendor/mediatek/proprietary/packages/apps/Launcher3/res/values/hideAppslist_strings.xml

<?xml version="1.0" encoding="utf-8"?>



<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">

<string-array name="hide_icon_apps" translatable="false">



<item> com.android.calendar</item>

 <item>  com.android.calculator2</item>

</string-array>

</resources>

然后还是在/LoaderTask.java的loadAllApps,只是加入之后再给它移除就好了

之前记得数组
​​​​​​​String[] hide_icon_apps = mApp.getContext().getResources().getStringArray(R.array.hide_icon_apps);
 
需要导包
​​​​​​​import com.android.launcher3.R;
然后
  for(String hide:hide_icon_apps){

             Log.i("yantao","hide apps="+hide);

             mBgAllAppsList.removePackage(hide,user);

             }

关键在于

for (int i = 0; i < apps.size(); i++) {

                LauncherActivityInfo app = apps.get(i);

                // This builds the icon bitmaps.

                mBgAllAppsList.add(new AppInfo(app, user, quietMode), app);

            }

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Youth King

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值