传祺19款GS5原厂桌面APP显示应用的另一种研究(无需破解桌面)

前言

之前研究过通过破解方式让第三方应用显示的方式,但是弊端也挺大的

最大的弊端就是所有的应用显示,但是我们并不需要把系统应用也显示出来。

经过大量头发的牺牲,终于研究出来不破解原厂桌面的情况自定义桌面图标的显示了

干正事专用

(此处省略N多分析过程)

1、应用商店在安装应用完成之后,会发送com.android.launcher.action.INSTALL_SHORTCUT广播,并附带此次安装的包名

2、原厂桌面监听广播,并将数据重新发送com.android.appstartchanged广播,此后逻辑创建桌面图标显示

如果我们要给原厂桌面显示图标的话,可以主动发送广播,即可实现不破解原厂桌面的情况下显示第三方应用。

发送广播的代码

1
2
3
Intent localIntent = new Intent("com.android.launcher.action.INSTALL_SHORTCUT");
localIntent.putExtra("pkgName", "应用的包名");
context.sendBroadcast(localIntent);

附上获取全部应用的代码

1
2
3
4
5
6
PackageManager packageManager = root.getContext().getPackageManager();
List<PackageInfo> installedPackages = packageManager.getInstalledPackages(0);//获取所有应用
String appName = (String) packageInfo.applicationInfo.loadLabel(packageManager);//应用名称
Drawable applicationIcon = packageManager.getApplicationIcon(packageInfo.applicationInfo);
Bitmap bitmap = ((BitmapDrawable) applicationIcon).getBitmap();//应用图标
String packageName = packageInfo.packageName;//获取包名

全自动化添加

不想自己手动添加?那就试试全自动化吧

监听android.intent.action.PACKAGE_ADDED的广播,然后通过getDataString()获取当前安装成功的应用包名,然后主动发送com.android.launcher.action.INSTALL_SHORTCUT广播即可。

懒人总能想出办法的

其他

注意事项:因桌面的限制,原厂桌面的应用显示只添加,并不能进行删除,请谨慎添加

此方法适用于 18-19款GS4、19款GS5原厂系统桌面