Android13-Launcer3_不显示某个APP图标

247 阅读1分钟

Launcher3/src/com/android/launcher3/model/LoaderTask.java

LoaderTask

实现Runnable接口

run()方法中会调用到loadAllApps()方法,这里过滤掉不显示的APP

    private List<LauncherActivityInfo> loadAllApps() {
        final List<UserHandle> profiles = mUserCache.getUserProfiles();
        List<LauncherActivityInfo> allActivityList = new ArrayList<>();
        // Clear the list of apps
        mBgAllAppsList.clear();

        List<IconRequestInfo<AppInfo>> iconRequestInfos = new ArrayList<>();
        for (UserHandle user : profiles) {
            // Query for the set of apps
            final List<LauncherActivityInfo> apps = mLauncherApps.getActivityList(null, user);
            // Fail if we don't have any apps
            // TODO: Fix this. Only fail for the current user.
            if (apps == null || apps.isEmpty()) {
                return allActivityList;
            }
            boolean quietMode = mUserManagerState.isUserQuiet(user);
            // Create the ApplicationInfos
            for (int i = 0; i < apps.size(); i++) {
                LauncherActivityInfo app = apps.get(i);
                AppInfo appInfo = new AppInfo(app, user, quietMode);

                iconRequestInfos.add(new IconRequestInfo<>(
                        appInfo, app, /* useLowResIcon= */ false));
                //不显示日历APP,不添加到集合中
                if("com.android.calendar".equals(app.getComponentName().getPackageName())){
                    continue;
                }
                mBgAllAppsList.add(
                        appInfo, app, !FeatureFlags.ENABLE_BULK_ALL_APPS_ICON_LOADING.get());
            }
            allActivityList.addAll(apps);
        }

未过滤前

%E6%97%A5%E5%8E%86%E5%9C%A8%E7%9A%84%E5%9B%BE%E7%89%87.jpg

过滤后

%E4%B8%8D%E6%98%BE%E7%A4%BA%E6%97%A5%E5%8E%86.jpg

Launcher3/src/com/android/launcher3/model/PackageUpdatedTask.java

PackageUpdatedTask

继承自BaseModelUpdateTask,也实现了Runnable接口

在execute()方法更新APP时过滤掉对应的APP

            case OP_UPDATE:
                try (SafeCloseable t =
                             appsList.trackRemoves(a -> removedComponents.add(a.componentName))) {
                    for (int i = 0; i < N; i++) {
                        if (DEBUG) Log.d(TAG, "mAllAppsList.updatePackage " + packages[i]);

                        //不显示日历APP,不进行更新
                        if("com.android.calendar".equals(packages[i])){
                            continue;
                        }
                        
                        iconCache.updateIconsForPkg(packages[i], mUser);
                        activitiesLists.put(
                                packages[i], appsList.updatePackage(context, packages[i], mUser));

                        // The update may have changed which shortcuts/widgets are available.
                        // Refresh the widgets for the package if we have an activity running.
                        Launcher launcher = Launcher.ACTIVITY_TRACKER.getCreatedActivity();
                        if (launcher != null) {
                            launcher.refreshAndBindWidgetsForPackageUser(
                                    new PackageUserKey(packages[i], mUser));
                        }
                    }
                }
                // Since package was just updated, the target must be available now.
                flagOp = FlagOp.NO_OP.removeFlag(WorkspaceItemInfo.FLAG_DISABLED_NOT_AVAILABLE);
                break;