前言
之前研究过通过破解方式让第三方应用显示的方式,但是弊端也挺大的
最大的弊端就是所有的应用显示,但是我们并不需要把系统应用也显示出来。
经过大量头发的牺牲,终于研究出来不破解原厂桌面的情况自定义桌面图标的显示了
干正事专用
(此处省略N多分析过程)
1、应用商店在安装应用完成之后,会发送com.android.launcher.action.INSTALL_SHORTCUT广播,并附带此次安装的包名
2、原厂桌面监听广播,并将数据重新发送com.android.appstartchanged广播,此后逻辑创建桌面图标显示
如果我们要给原厂桌面显示图标的话,可以主动发送广播,即可实现不破解原厂桌面的情况下显示第三方应用。
发送广播的代码
1 | Intent localIntent = new Intent("com.android.launcher.action.INSTALL_SHORTCUT"); |
附上获取全部应用的代码
1 | PackageManager packageManager = root.getContext().getPackageManager(); |
全自动化添加
不想自己手动添加?那就试试全自动化吧
监听android.intent.action.PACKAGE_ADDED的广播,然后通过getDataString()获取当前安装成功的应用包名,然后主动发送com.android.launcher.action.INSTALL_SHORTCUT广播即可。
懒人总能想出办法的
其他
注意事项:因桌面的限制,原厂桌面的应用显示只添加,并不能进行删除,请谨慎添加
此方法适用于 18-19款GS4、19款GS5原厂系统桌面