有一些 工具应用 或者 测试应用,其实是预置到系统中的,但是肯定不能让它们在桌面( Launcher )中显示出来。所以提供 rom 的时候一般会有这种需求:隐藏指定应用图标。
这里有两个方案(无论以下哪种方案,均可以在 设置 -> 应用和通知 -> 所有应用 中查看到被隐藏的应用,解决方案):
【方案一】:在编译这个被指定的应用的时候,在该应用功能清单 AndroidManifest.xml 中入口 Activity 节点下,去掉:,添加上: 和 (去掉 之后,编译出来的应用安装到设备上就不会再有桌面 icon;之所以添加了 和 是想可以用 intent 携带 action 的方式可以启动起这个 Activity)。
【方案二】:在 Launcher3 应用中做一些修改。当Launcher3 中加载显示系统中所有应用的 icon 的时候做判断:当应用的包名是指定的需要隐藏的应用的时候,不在 Launcher3 中加载该应用 icon (有坑:需要多处修改)。
因为方案一比较简单,不用在这里做过多的解释,下面说以下方案二的具体实现过程,以及最后,说一下方案一和方案二分别在什么情况下使用。
首先,在 Launcher 源码中有一个类叫做 LoaderTask.java ,对于这个类的官方描述如下:
Runnable for the thread that loads the contents of the launcher:
- workspace icons
- widgets
- all apps icons
- deep shortcuts