前言
launcher因为开机即启动,若添加默认launcher过早则可能导致其他进程崩溃,添加过晚则起不到启动默认设置的效果且会弹出选择launcher的提示框.
查看了一些其他的修改方法,均需在ActivityManagerService.java的startHomeActivityLocked添加默认启动,但是发现添加后,若系统存在多个launcher apk,则仍然会弹出launcher选择提示框.经过几天折腾,发现一个比较简便且改动不大的方法.
主要思路是发现某些OS自带的apk也添加了
<category android:name="android.intent.category.HOME" />
的响应,且设置了 priority=“1”,则可以保证该应用在Launcher启动前就运行起来.
以下为具体code修改.
高通 code
7.1版本
若有编译 SetupWizard则使用此方法,无则使用 mtk code方法.
vendor\qcom\proprietary\qrdplus\Extension\apps\SetupWizard\src\com\qualcomm\qti\setupwizard\SetupWelcomeActivity.java
private static final String ORIGINAL_LAUNCHER_PACKAGENAME = "com.android.launcher3";//设置为定制的包名
private static final String ORIGINAL_LAUNCHER_CLASSNAME = "com.android.launcher3.Launcher";//设置为定制的类名
MTK code
6.0版本
packages\apps\Provision\AndroidManifest.xml
添加 android:sharedUserId=“android.uid.system”
packages\apps\Provision\src\com\android\provision\DefaultActivity.java
onCreate()方法添加
if(SystemProperties.getInt("persist.sys.defualt.launcher",0)==0)//一次性使用系统