From b16d0f96ec9e41fdec7f348715157d2542afb2c2 Mon Sep 17 00:00:00 2001 From: tehcneko <7764726+tehcneko@users.noreply.github.com> Date: Fri, 29 Jan 2021 11:30:01 +0800 Subject: [PATCH] Fix manager blackwhite list logic --- .../lsposed/manager/adapters/AppHelper.java | 34 ++++++++++++------- 1 file changed, 21 insertions(+), 13 deletions(-) diff --git a/app/src/main/java/io/github/lsposed/manager/adapters/AppHelper.java b/app/src/main/java/io/github/lsposed/manager/adapters/AppHelper.java index 5208192f..95dc8436 100644 --- a/app/src/main/java/io/github/lsposed/manager/adapters/AppHelper.java +++ b/app/src/main/java/io/github/lsposed/manager/adapters/AppHelper.java @@ -12,11 +12,6 @@ import androidx.annotation.NonNull; import androidx.appcompat.widget.PopupMenu; import androidx.fragment.app.FragmentManager; -import io.github.lsposed.manager.App; -import io.github.lsposed.manager.Constants; -import io.github.lsposed.manager.R; -import io.github.lsposed.manager.util.CompileUtil; - import java.io.File; import java.io.IOException; import java.nio.file.Files; @@ -26,6 +21,11 @@ import java.util.ArrayList; import java.util.HashMap; import java.util.List; +import io.github.lsposed.manager.App; +import io.github.lsposed.manager.Constants; +import io.github.lsposed.manager.R; +import io.github.lsposed.manager.util.CompileUtil; + import static android.provider.Settings.ACTION_APPLICATION_DETAILS_SETTINGS; public class AppHelper { @@ -51,20 +51,28 @@ public class AppHelper { public static List getAppList(boolean white) { Path dir = Paths.get(BASE_PATH + (white ? WHITE_LIST_PATH : BLACK_LIST_PATH)); - List s = new ArrayList<>(); + List list = new ArrayList<>(); try { Files.list(dir).forEach(path -> { if (!Files.isDirectory(path)) { - String packageName = path.getFileName().toString(); - if (forceWhiteList.contains(packageName)) { - createAppListFile(packageName, white, white); - } - if (white) s.add(packageName); + list.add(path.getFileName().toString()); } }); - return s; + forceWhiteList.forEach(s -> { + if (list.contains(s)) { + if (!white) { + createAppListFile(s, false, false); + list.remove(s); + } + } else if (white) { + createAppListFile(s, true, true); + list.add(s); + } + }); + return list; } catch (IOException e) { - return s; + e.printStackTrace(); + return list; } }