From 7aeee8fe9ad220a93e4f61d50175a795db912715 Mon Sep 17 00:00:00 2001 From: tehcneko <7764726+tehcneko@users.noreply.github.com> Date: Tue, 2 Feb 2021 14:13:18 +0800 Subject: [PATCH] Fix manager updating modules list (#47) --- .../manager/adapters/ScopeAdapter.java | 30 ++++------ .../manager/ui/activity/ModulesActivity.java | 9 +-- .../lsposed/manager/util/ModuleUtil.java | 57 +------------------ 3 files changed, 15 insertions(+), 81 deletions(-) diff --git a/app/src/main/java/io/github/lsposed/manager/adapters/ScopeAdapter.java b/app/src/main/java/io/github/lsposed/manager/adapters/ScopeAdapter.java index f6b1cec6..e022ba86 100644 --- a/app/src/main/java/io/github/lsposed/manager/adapters/ScopeAdapter.java +++ b/app/src/main/java/io/github/lsposed/manager/adapters/ScopeAdapter.java @@ -457,28 +457,20 @@ public class ScopeAdapter extends RecyclerView.Adapter public boolean onBackPressed() { if (masterSwitch.isChecked() && checkedList.isEmpty()) { + MaterialAlertDialogBuilder builder = new MaterialAlertDialogBuilder(activity); + builder.setTitle(R.string.use_recommended); + builder.setMessage(hasRecommended() ? R.string.no_scope_selected_has_recommended : R.string.no_scope_selected); if (hasRecommended()) { - new MaterialAlertDialogBuilder(activity) - .setTitle(R.string.use_recommended) - .setMessage(R.string.no_scope_selected_has_recommended) - .setPositiveButton(android.R.string.ok, (dialog, which) -> checkRecommended()) - .setNegativeButton(android.R.string.cancel, (dialog, which) -> { - ModuleUtil.getInstance().setModuleEnabled(modulePackageName, false); - Toast.makeText(activity, activity.getString(R.string.module_disabled_no_selection, moduleName), Toast.LENGTH_LONG).show(); - activity.finish(); - }) - .show(); + builder.setPositiveButton(android.R.string.ok, (dialog, which) -> checkRecommended()); } else { - new MaterialAlertDialogBuilder(activity) - .setMessage(R.string.no_scope_selected) - .setPositiveButton(android.R.string.cancel, null) - .setNegativeButton(android.R.string.ok, (dialog, which) -> { - ModuleUtil.getInstance().setModuleEnabled(modulePackageName, false); - Toast.makeText(activity, activity.getString(R.string.module_disabled_no_selection, moduleName), Toast.LENGTH_LONG).show(); - activity.finish(); - }) - .show(); + builder.setPositiveButton(android.R.string.cancel, null); } + builder.setNegativeButton(hasRecommended() ? android.R.string.cancel : android.R.string.ok, (dialog, which) -> { + ModuleUtil.getInstance().setModuleEnabled(modulePackageName, false); + Toast.makeText(activity, activity.getString(R.string.module_disabled_no_selection, moduleName), Toast.LENGTH_LONG).show(); + activity.finish(); + }); + builder.show(); return false; } else { return true; diff --git a/app/src/main/java/io/github/lsposed/manager/ui/activity/ModulesActivity.java b/app/src/main/java/io/github/lsposed/manager/ui/activity/ModulesActivity.java index 3ebbdb40..3b709a48 100644 --- a/app/src/main/java/io/github/lsposed/manager/ui/activity/ModulesActivity.java +++ b/app/src/main/java/io/github/lsposed/manager/ui/activity/ModulesActivity.java @@ -81,7 +81,7 @@ public class ModulesActivity extends BaseActivity implements ModuleUtil.ModuleLi }); adapter.addAll(showList); adapter.notifyDataSetChanged(); - moduleUtil.updateModulesList(false); + moduleUtil.updateModulesList(); binding.swipeRefreshLayout.setRefreshing(false); } }; @@ -170,13 +170,6 @@ public class ModulesActivity extends BaseActivity implements ModuleUtil.ModuleLi @Override public void onSingleInstalledModuleReloaded(ModuleUtil moduleUtil, String packageName, ModuleUtil.InstalledModule module) { - moduleUtil.updateModulesList(false); - runOnUiThread(reloadModules); - } - - @Override - public void onInstalledModulesReloaded(ModuleUtil moduleUtil) { - moduleUtil.updateModulesList(false); runOnUiThread(reloadModules); } diff --git a/app/src/main/java/io/github/lsposed/manager/util/ModuleUtil.java b/app/src/main/java/io/github/lsposed/manager/util/ModuleUtil.java index 45e7a7b4..adbbdcda 100644 --- a/app/src/main/java/io/github/lsposed/manager/util/ModuleUtil.java +++ b/app/src/main/java/io/github/lsposed/manager/util/ModuleUtil.java @@ -7,13 +7,9 @@ import android.content.pm.PackageManager; import android.content.pm.PackageManager.NameNotFoundException; import android.os.Build; import android.util.Log; -import android.view.View; -import android.widget.Toast; import androidx.annotation.NonNull; -import com.google.android.material.snackbar.Snackbar; - import java.io.IOException; import java.io.PrintWriter; import java.util.Arrays; @@ -26,7 +22,6 @@ import java.util.concurrent.CopyOnWriteArrayList; import io.github.lsposed.manager.App; import io.github.lsposed.manager.Constants; -import io.github.lsposed.manager.R; import io.github.lsposed.manager.adapters.AppHelper; public final class ModuleUtil { @@ -35,11 +30,9 @@ public final class ModuleUtil { private static ModuleUtil instance = null; private final PackageManager pm; private final List listeners = new CopyOnWriteArrayList<>(); - //private InstalledModule framework = null; private Map installedModules; private final List enabledModules; private boolean isReloading = false; - private Toast toast; private final SharedPreferences prefs; private ModuleUtil() { @@ -92,9 +85,6 @@ public final class ModuleUtil { synchronized (this) { isReloading = false; } - for (ModuleListener listener : listeners) { - listener.onInstalledModulesReloaded(instance); - } } public InstalledModule reloadSingleModule(String packageName) { @@ -143,9 +133,11 @@ public final class ModuleUtil { if (enabled) { if (!enabledModules.contains(packageName)) { enabledModules.add(packageName); + updateModulesList(); } } else { enabledModules.remove(packageName); + updateModulesList(); } } @@ -167,58 +159,20 @@ public final class ModuleUtil { return result; } - public synchronized void updateModulesList(boolean showToast) { - updateModulesList(showToast, null); - } - - public synchronized void updateModulesList(boolean showToast, View view) { + public synchronized void updateModulesList() { try { Log.i(App.TAG, "ModuleUtil -> updating modules.list"); - int installedXposedVersion = Constants.getXposedApiVersion(); - if (!prefs.getBoolean("skip_xposedminversion_check", false) && installedXposedVersion <= 0 && showToast) { - showToast(view, R.string.notinstalled); - return; - } - PrintWriter modulesList = new PrintWriter(Constants.getModulesListFile()); PrintWriter enabledModulesList = new PrintWriter(Constants.getEnabledModulesListFile()); List enabledModules = getEnabledModules(); for (InstalledModule module : enabledModules) { - - if (!prefs.getBoolean("skip_xposedminversion_check", false) && (module.minVersion > installedXposedVersion || module.minVersion < MIN_MODULE_VERSION) && showToast) { - showToast(view, R.string.notinstalled); - continue; - } - modulesList.println(module.app.sourceDir); enabledModulesList.println(module.app.packageName); } modulesList.close(); enabledModulesList.close(); - - if (showToast) { - showToast(view, R.string.xposed_module_list_updated); - } } catch (IOException e) { Log.e(App.TAG, "ModuleUtil -> cannot write " + Constants.getModulesListFile(), e); - showToast(view, "cannot write " + Constants.getModulesListFile() + e); - } - } - - private void showToast(View view, int message) { - showToast(view, App.getInstance().getString(message)); - } - - private void showToast(View view, String message) { - if (view != null) { - Snackbar.make(view, message, Snackbar.LENGTH_SHORT).show(); - } else { - if (toast != null) { - toast.cancel(); - toast = null; - } - toast = Toast.makeText(App.getInstance(), message, Toast.LENGTH_SHORT); - toast.show(); } } @@ -237,11 +191,6 @@ public final class ModuleUtil { * reloaded */ void onSingleInstalledModuleReloaded(ModuleUtil moduleUtil, String packageName, InstalledModule module); - - /** - * Called whenever all installed modules have been reloaded - */ - void onInstalledModulesReloaded(ModuleUtil moduleUtil); } public class InstalledModule {