From 8358b1c500b141f484119c854407f076a1b48f91 Mon Sep 17 00:00:00 2001 From: NekoInverter <42698724+NekoInverter@users.noreply.github.com> Date: Mon, 23 Nov 2020 18:58:49 +0800 Subject: [PATCH] Hide scope if unsupported --- .../org/meowcat/edxposed/manager/App.java | 10 +++++++ .../edxposed/manager/ModulesActivity.java | 3 ++ .../edxposed/manager/util/Version.java | 29 +++++++++++++++++++ 3 files changed, 42 insertions(+) create mode 100644 app/src/main/java/org/meowcat/edxposed/manager/util/Version.java diff --git a/app/src/main/java/org/meowcat/edxposed/manager/App.java b/app/src/main/java/org/meowcat/edxposed/manager/App.java index 0761291c..036b0f56 100644 --- a/app/src/main/java/org/meowcat/edxposed/manager/App.java +++ b/app/src/main/java/org/meowcat/edxposed/manager/App.java @@ -24,6 +24,7 @@ import org.meowcat.edxposed.manager.util.FileUtils; import org.meowcat.edxposed.manager.util.ModuleUtil; import org.meowcat.edxposed.manager.util.NotificationUtil; import org.meowcat.edxposed.manager.util.RepoLoader; +import org.meowcat.edxposed.manager.util.Version; import java.io.File; import java.io.PrintWriter; @@ -79,6 +80,15 @@ public class App extends XposedApp implements Application.ActivityLifecycleCallb FileUtils.setPermissions(dir, permissions); } + public static boolean supportScope() { + try { + String version = App.getXposedProp().getVersion(); + return new Version(version.substring(6, 13)).compareTo(new Version("0.5.1.3")) >= 0; + } catch (Exception e) { + return false; + } + } + public void onCreate() { super.onCreate(); if (!BuildConfig.DEBUG) { diff --git a/app/src/main/java/org/meowcat/edxposed/manager/ModulesActivity.java b/app/src/main/java/org/meowcat/edxposed/manager/ModulesActivity.java index 8bba3351..7717e6a4 100644 --- a/app/src/main/java/org/meowcat/edxposed/manager/ModulesActivity.java +++ b/app/src/main/java/org/meowcat/edxposed/manager/ModulesActivity.java @@ -528,6 +528,9 @@ public class ModulesActivity extends BaseActivity implements ModuleUtil.ModuleLi menu.removeItem(R.id.menu_download_updates); menu.removeItem(R.id.menu_support); } + if (!App.supportScope()) { + menu.removeItem(R.id.menu_scope); + } if (installedModule.packageName.equals(BuildConfig.APPLICATION_ID)) { menu.removeItem(R.id.menu_launch); menu.removeItem(R.id.menu_scope); diff --git a/app/src/main/java/org/meowcat/edxposed/manager/util/Version.java b/app/src/main/java/org/meowcat/edxposed/manager/util/Version.java new file mode 100644 index 00000000..41e1505f --- /dev/null +++ b/app/src/main/java/org/meowcat/edxposed/manager/util/Version.java @@ -0,0 +1,29 @@ +package org.meowcat.edxposed.manager.util; + +import androidx.annotation.NonNull; + +public class Version implements Comparable { + @NonNull + public final int[] numbers; + + public Version(@NonNull String version) { + final String[] split = version.split("-")[0].split("\\."); + numbers = new int[split.length]; + for (int i = 0; i < split.length; i++) { + numbers[i] = Integer.parseInt(split[i]); + } + } + + @Override + public int compareTo(@NonNull Version another) { + final int maxLength = Math.max(numbers.length, another.numbers.length); + for (int i = 0; i < maxLength; i++) { + final int left = i < numbers.length ? numbers[i] : 0; + final int right = i < another.numbers.length ? another.numbers[i] : 0; + if (left != right) { + return left < right ? -1 : 1; + } + } + return 0; + } +} \ No newline at end of file