Improve app list filter logic

This commit is contained in:
NekoInverter 2020-11-21 21:31:48 +08:00
parent 16f34412fd
commit d81e6804a4
No known key found for this signature in database
GPG Key ID: 280D6CCCF95715F9
2 changed files with 24 additions and 22 deletions

View File

@ -66,34 +66,36 @@ public class AppAdapter extends RecyclerView.Adapter<AppAdapter.ViewHolder> impl
} }
private void loadApps() { private void loadApps() {
boolean onlyInAppList = this instanceof ScopeAdapter;
fullList = pm.getInstalledApplications(PackageManager.GET_META_DATA); fullList = pm.getInstalledApplications(PackageManager.GET_META_DATA);
List<ApplicationInfo> rmList = new ArrayList<>(); List<ApplicationInfo> 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)) { if (info.metaData != null && info.metaData.containsKey("xposedmodule") || AppHelper.FORCE_WHITE_LIST_MODULE.contains(info.packageName)) {
rmList.add(info); rmList.add(info);
continue;
} }
} }
} if (this instanceof ScopeAdapter) {
if (onlyInAppList && AppHelper.isBlackListMode()) { if (AppHelper.isBlackListMode()) {
if (AppHelper.isWhiteListMode()) { if (AppHelper.isWhiteListMode()) {
List<String> whiteList = AppHelper.getWhiteList(); List<String> whiteList = AppHelper.getWhiteList();
for (ApplicationInfo info : fullList) {
if (!whiteList.contains(info.packageName)) { if (!whiteList.contains(info.packageName)) {
rmList.add(info); rmList.add(info);
} continue;
} }
} else { } else {
List<String> blackList = AppHelper.getBlackList(); List<String> blackList = AppHelper.getBlackList();
for (ApplicationInfo info : fullList) {
if (blackList.contains(info.packageName)) { if (blackList.contains(info.packageName)) {
rmList.add(info); rmList.add(info);
continue;
}
}
}
if (info.packageName.equals(((ScopeAdapter) this).modulePackageName)) {
rmList.add(info);
} }
} }
} }
}
if (rmList.size() > 0) { if (rmList.size() > 0) {
fullList.removeAll(rmList); fullList.removeAll(rmList);
} }

View File

@ -12,7 +12,7 @@ import java.util.List;
public class ScopeAdapter extends AppAdapter { public class ScopeAdapter extends AppAdapter {
private final String modulePackageName; protected final String modulePackageName;
private List<String> checkedList; private List<String> checkedList;
public ScopeAdapter(Context context, String modulePackageName) { public ScopeAdapter(Context context, String modulePackageName) {