From d81e6804a41c22061fb45d39341490aa0cc94c2b Mon Sep 17 00:00:00 2001 From: NekoInverter <42698724+NekoInverter@users.noreply.github.com> Date: Sat, 21 Nov 2020 21:31:48 +0800 Subject: [PATCH] Improve app list filter logic --- .../edxposed/manager/adapters/AppAdapter.java | 44 ++++++++++--------- .../manager/adapters/ScopeAdapter.java | 2 +- 2 files changed, 24 insertions(+), 22 deletions(-) diff --git a/app/src/main/java/org/meowcat/edxposed/manager/adapters/AppAdapter.java b/app/src/main/java/org/meowcat/edxposed/manager/adapters/AppAdapter.java index bdc7a742..536a21a4 100644 --- a/app/src/main/java/org/meowcat/edxposed/manager/adapters/AppAdapter.java +++ b/app/src/main/java/org/meowcat/edxposed/manager/adapters/AppAdapter.java @@ -66,34 +66,36 @@ public class AppAdapter extends RecyclerView.Adapter impl } private void loadApps() { - boolean onlyInAppList = this instanceof ScopeAdapter; fullList = pm.getInstalledApplications(PackageManager.GET_META_DATA); List rmList = new ArrayList<>(); - if (!XposedApp.getPreferences().getBoolean("show_modules", true) || onlyInAppList) { - for (ApplicationInfo info : fullList) { + for (ApplicationInfo info : fullList) { + if (!XposedApp.getPreferences().getBoolean("show_modules", true)) { if (info.metaData != null && info.metaData.containsKey("xposedmodule") || AppHelper.FORCE_WHITE_LIST_MODULE.contains(info.packageName)) { rmList.add(info); + continue; + } + } + if (this instanceof ScopeAdapter) { + if (AppHelper.isBlackListMode()) { + if (AppHelper.isWhiteListMode()) { + List whiteList = AppHelper.getWhiteList(); + if (!whiteList.contains(info.packageName)) { + rmList.add(info); + continue; + } + } else { + List blackList = AppHelper.getBlackList(); + if (blackList.contains(info.packageName)) { + rmList.add(info); + continue; + } + } + } + if (info.packageName.equals(((ScopeAdapter) this).modulePackageName)) { + rmList.add(info); } } } - if (onlyInAppList && AppHelper.isBlackListMode()) { - if (AppHelper.isWhiteListMode()) { - List whiteList = AppHelper.getWhiteList(); - for (ApplicationInfo info : fullList) { - if (!whiteList.contains(info.packageName)) { - rmList.add(info); - } - } - } else { - List blackList = AppHelper.getBlackList(); - for (ApplicationInfo info : fullList) { - if (blackList.contains(info.packageName)) { - rmList.add(info); - } - } - } - - } if (rmList.size() > 0) { fullList.removeAll(rmList); } diff --git a/app/src/main/java/org/meowcat/edxposed/manager/adapters/ScopeAdapter.java b/app/src/main/java/org/meowcat/edxposed/manager/adapters/ScopeAdapter.java index a868d883..56a8af72 100644 --- a/app/src/main/java/org/meowcat/edxposed/manager/adapters/ScopeAdapter.java +++ b/app/src/main/java/org/meowcat/edxposed/manager/adapters/ScopeAdapter.java @@ -12,7 +12,7 @@ import java.util.List; public class ScopeAdapter extends AppAdapter { - private final String modulePackageName; + protected final String modulePackageName; private List checkedList; public ScopeAdapter(Context context, String modulePackageName) {