由于我们产品需要把自己的Launcher固定住,而且不允许任何情况去更换别的Launcher,于是查了一些帖子,下面这位仁兄写的比较靠谱,但依然没有彻底固定住
http://blog.csdn.net/fireness/article/details/48177923
其实这样做是最彻底的,普通用户怎么弄也弄不掉我的Launcher 了。
写下笔记:
系统版本:4.2.2, 文件:PackageManagerService.java
修改处://add by chenwl
"com.android.launcher1"是我们自己开发的Launcher
private final class ActivityIntentResolver
extends IntentResolver<PackageParser.ActivityIntentInfo, ResolveInfo> {
public List<ResolveInfo> queryIntent(Intent intent, String resolvedType,
boolean defaultOnly, int userId) {
if (!sUserManager.exists(userId)) return null;
mFlags = defaultOnly ? PackageManager.MATCH_DEFAULT_ONLY : 0;
//add by chenwl start
if(defaultOnly && intent.hasCategory(Intent.CATEGORY_HOME)){
intent.setPackage("com.android.launcher1");
}
//add by chenwl end.
return super.queryIntent(intent, resolvedType, defaultOnly, userId);
}
public List<ResolveInfo> queryIntent(Intent intent, String resolvedType, int flags,
int userId) {
if (!sUserManager.exists(userId)) return null;
mFlags = flags;
//add by chenwl start
if(((flags & PackageManager.MATCH_DEFAULT_ONLY) != 0) && intent.hasCategory(Intent.CATEGORY_HOME)){
intent.setPackage("com.android.launcher1");
}
//add by chenwl end.
return super.queryIntent(intent, resolvedType,
(flags & PackageManager.MATCH_DEFAULT_ONLY) != 0, userId);
}