在Android10之前,应用程序通过调用PackageManager.setComponentEnabledSetting(componentName, PackageManager.COMPONENT_ENABLED_STATE_DISABLED, PackageManager.DONT_KILL_APP)函数来实现图标隐藏。
但是在android10之后,所有带四大组件(activity service broadcast contentprovider)和需要声明申请权限的应用,调用这个函数将失去效果,经过测试效果如下:
网上一种方式是,设置activity的label为空字符串“”,icon和roundIcon像素值为0的黑色图标。该方案链接如下:
Android10.0应用图标隐藏方案(7.0-10.0)
通过实际测试,这种方法的隐藏效果是有重大缺陷的,在调用开始的隐藏函数后,桌面上的图标虽然抹去了,但留下了一个图标大小的阴影,并不是文中所说的完全看不到(作者源码我在android12上亲自测试过),这时候点击虽然没有效果,但是视觉上的缺陷是不能容忍的。
通过实际测试,我发现有一种隐藏图标的方式,其实现步骤如下:
经过测试,发现上述方法是完全可行的,也基本达到了预期目的。
测试源码地址如下,各位看官只需要揣摩一下AndroidManifest.xml文件中的Application节区即可。
源码地址