彻底固定一个默认Launcher

来源:互联网 发布:优化标签怎么设置 编辑:程序博客网 时间:2024/06/04 17:52

由于我们产品需要把自己的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);
        }



0 0
原创粉丝点击