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);
}