当系统存在 两个或者以上多个启动桌面Launcher的时候,往往会开机弹出一个 dialog的列表让你去选择启动那个Launcher,这个时候我们要设置开机默认
之前试过网上很多方法,没怎么起到作用,该方法测试通过,应用与Android 4.4.4 MTK 6572
\frameworks\base\services\java\com\android\server\am\ActivityManagerService.java
修改ActivityManagerService.java的startHomeActivityLocked方法
boolean startHomeActivityLocked(int userId, String reason) {
if (mFactoryTest == FactoryTest.FACTORY_TEST_LOW_LEVEL
&& mTopAction == null) {
// We are running in factory test mode, but unable to find
// the factory test app, so just sit around displaying the
// error message and don't try to start anything.
return false;
}
/**
* mtk add
* set default launcher
*/
ComponentName DefaultLauncher=new
ComponentName("com.android.launcher3","com.android.launcher3.Launcher"); //此处设置默认Launcher的包
类名
//Slog.d(TAG,"set default launcher");
final PackageManager mPm = mContext.getPackageManager();
ArrayList<ResolveInfo> homeActivities = new ArrayList<ResolveInfo>();
ComponentName currentDefaultHome = mPm.getHomeActivities(homeActivities);
ComponentName[]mHomeComponentSet = new ComponentName[homeActivities.size()];
for (int i = 0; i < homeActivities.size(); i++) {
final ResolveInfo candidate = homeActivities.get(i);
//Slog.d(TAG,"homeActivities"+candidate);
final ActivityInfo info = candidate.activityInfo;
ComponentName activityName = new ComponentName(info.packageName, info.name);
mHomeComponentSet[i] = activityName;
}
IntentFilter mHomeFilter = new IntentFilter(Intent.ACTION_MAIN);
mHomeFilter.addCategory(Intent.CATEGORY_HOME);
mHomeFilter.addCategory(Intent.CATEGORY_DEFAULT);
List<ComponentName&