Launcher 功能表中优先显示以指定字符串开头的包名的应用

来源:互联网 发布:淘宝客户端删除评价 编辑:程序博客网 时间:2024/05/22 05:09

launcher 中功能表默认排序是按照应用名字来排的。

既然可以按照名字排序当然也可以按照包名来排序。

找到排序的地方,然后重写一下排序的方法,这个问题就解决了。

应用列表对应launcher 中的AppsCustomizePagedView.java ,

  文件中中有一个public void setApps(ArrayList<ApplicationInfo> list);的方法就是来设置应用列表的。

其中方法中Collections.sort(mApps, LauncherModel.APP_NAME_COMPARATOR); 就是排序了。

找到LauncherModel.APP_NAME_COMPARATOR 这个Comparator。

增加红色的部分的代码,就能实现在功能表中优先排指定字符串开头包名的应用了。


public static final Comparator<ApplicationInfo> APP_NAME_COMPARATOR
            = new Comparator<ApplicationInfo>() {
        public final int compare(ApplicationInfo a, ApplicationInfo b) {
            
            String privatePackage = "com.test";
            if(a.getPackageName().startsWith(privatePackage)&& b.getPackageName().startsWith(privatePackage)){
              
            }else if(a.getPackageName().startsWith(privatePackage)&& !b.getPackageName().startsWith(privatePackage)){
                return -1;
            }else if(!a.getPackageName().startsWith(privatePackage)&& b.getPackageName().startsWith(privatePackage)){
                return 1;
            }

            
            int result = sCollator.compare(a.title.toString(), b.title.toString());
            if (result == 0) {
                result = a.componentName.compareTo(b.componentName);
            }
            return result;
        }
    };



0 0
原创粉丝点击