From fa56e8e02aacbda4d89ce538295881e81c6ea18a Mon Sep 17 00:00:00 2001 From: NekoInverter <42698724+NekoInverter@users.noreply.github.com> Date: Wed, 25 Nov 2020 08:55:04 +0800 Subject: [PATCH] Fix version check --- .../android/xposed/installer/XposedApp.java | 7 +--- .../org/meowcat/edxposed/manager/App.java | 15 +------ .../edxposed/manager/MainActivity.java | 6 +-- .../edxposed/manager/ModulesActivity.java | 42 ++++++++++++------- .../edxposed/manager/util/ModuleUtil.java | 4 +- .../edxposed/manager/util/Version.java | 29 ------------- app/src/main/res/values-zh-rCN/strings.xml | 1 + app/src/main/res/values/strings.xml | 1 + 8 files changed, 36 insertions(+), 69 deletions(-) delete mode 100644 app/src/main/java/org/meowcat/edxposed/manager/util/Version.java diff --git a/app/src/main/java/de/robv/android/xposed/installer/XposedApp.java b/app/src/main/java/de/robv/android/xposed/installer/XposedApp.java index bffab315..d5631613 100644 --- a/app/src/main/java/de/robv/android/xposed/installer/XposedApp.java +++ b/app/src/main/java/de/robv/android/xposed/installer/XposedApp.java @@ -16,17 +16,12 @@ import static de.robv.android.xposed.installer.util.InstallZipUtil.parseXposedPr public class XposedApp extends Application { public static final String TAG = "EdXposedManager"; private static final File EDXPOSED_PROP_FILE = new File("/system/framework/edconfig.jar"); - private static XposedApp instance = null; public InstallZipUtil.XposedProp mXposedProp; public static boolean isEnhancementEnabled() { return false; } - public static XposedApp getInstance() { - return instance; - } - // This method is hooked by XposedBridge to return the current version public static Integer getActiveXposedVersion() { Log.d(TAG, "EdXposed is not active"); @@ -35,10 +30,10 @@ public class XposedApp extends Application { public void onCreate() { super.onCreate(); - instance = this; reloadXposedProp(); } + // This method is hooked by XposedBridge public void reloadXposedProp() { InstallZipUtil.XposedProp prop = null; File file = null; 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 036b0f56..684d6004 100644 --- a/app/src/main/java/org/meowcat/edxposed/manager/App.java +++ b/app/src/main/java/org/meowcat/edxposed/manager/App.java @@ -24,7 +24,6 @@ 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; @@ -54,7 +53,7 @@ public class App extends XposedApp implements Application.ActivityLifecycleCallb } public static InstallZipUtil.XposedProp getXposedProp() { - return XposedApp.getInstance().mXposedProp; + return getInstance().mXposedProp; } public static void runOnUiThread(Runnable action) { @@ -65,10 +64,6 @@ public class App extends XposedApp implements Application.ActivityLifecycleCallb } } - public static Integer getXposedVersion() { - return getActiveXposedVersion(); - } - public static SharedPreferences getPreferences() { return instance.pref; } @@ -81,12 +76,7 @@ public class App extends XposedApp implements Application.ActivityLifecycleCallb } 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; - } + return App.getActiveXposedVersion() >= 92; } public void onCreate() { @@ -131,7 +121,6 @@ public class App extends XposedApp implements Application.ActivityLifecycleCallb pref = PreferenceManager.getDefaultSharedPreferences(this); - XposedApp.getInstance().reloadXposedProp(); createDirectories(); NotificationUtil.init(); registerReceivers(); diff --git a/app/src/main/java/org/meowcat/edxposed/manager/MainActivity.java b/app/src/main/java/org/meowcat/edxposed/manager/MainActivity.java index 9cc07f77..1d09b484 100644 --- a/app/src/main/java/org/meowcat/edxposed/manager/MainActivity.java +++ b/app/src/main/java/org/meowcat/edxposed/manager/MainActivity.java @@ -92,7 +92,7 @@ public class MainActivity extends BaseActivity implements RepoLoader.RepoListene } if (installedXposedVersion != null) { int installedXposedVersionInt = extractIntPart(installedXposedVersion); - if (installedXposedVersionInt == App.getXposedVersion()) { + if (App.getActiveXposedVersion() != -1) { String installedXposedVersionStr = installedXposedVersionInt + ".0"; binding.statusTitle.setText(R.string.Activated); binding.statusSummary.setText(installedXposedVersion.replace(installedXposedVersionStr + "-", "")); @@ -104,9 +104,9 @@ public class MainActivity extends BaseActivity implements RepoLoader.RepoListene binding.status.setCardBackgroundColor(ContextCompat.getColor(this, R.color.amber_500)); binding.statusIcon.setImageResource(R.drawable.ic_warning); } - } else if (App.getXposedVersion() > 0) { + } else if (App.getActiveXposedVersion() > 0) { binding.statusTitle.setText(R.string.Activated); - binding.statusSummary.setText(getString(R.string.version_x, App.getXposedVersion())); + binding.statusSummary.setText(getString(R.string.version_x, App.getActiveXposedVersion())); binding.status.setCardBackgroundColor(ContextCompat.getColor(this, R.color.download_status_update_available)); binding.statusIcon.setImageResource(R.drawable.ic_check_circle); } else { 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 7717e6a4..639ea104 100644 --- a/app/src/main/java/org/meowcat/edxposed/manager/ModulesActivity.java +++ b/app/src/main/java/org/meowcat/edxposed/manager/ModulesActivity.java @@ -24,6 +24,7 @@ import androidx.core.content.ContextCompat; import androidx.recyclerview.widget.DividerItemDecoration; import androidx.recyclerview.widget.RecyclerView; +import com.google.android.material.dialog.MaterialAlertDialogBuilder; import com.google.android.material.snackbar.Snackbar; import org.meowcat.edxposed.manager.databinding.ActivityModulesBinding; @@ -185,7 +186,7 @@ public class ModulesActivity extends BaseActivity implements ModuleUtil.ModuleLi pm = getPackageManager(); displayNameComparator = new ApplicationInfo.DisplayNameComparator(pm); cmp = displayNameComparator; - installedXposedVersion = App.getXposedVersion(); + installedXposedVersion = App.getActiveXposedVersion(); if (installedXposedVersion <= 0) { Snackbar.make(binding.snackbar, R.string.xposed_not_active, Snackbar.LENGTH_LONG).setAction(R.string.Settings, v -> { Intent intent = new Intent(); @@ -406,17 +407,17 @@ public class ModulesActivity extends BaseActivity implements ModuleUtil.ModuleLi if (packageName == null) { return false; } - Intent launchIntent = getSettingsIntent(packageName); - if (launchIntent != null) { - startActivity(launchIntent); + Intent intent = getSettingsIntent(packageName); + if (intent != null) { + startActivity(intent); } else { Snackbar.make(binding.snackbar, R.string.module_no_ui, Snackbar.LENGTH_LONG).show(); } return true; } else if (itemId == R.id.menu_download_updates) { - Intent detailsIntent = new Intent(this, DownloadDetailsActivity.class); - detailsIntent.setData(Uri.fromParts("package", module.packageName, null)); - startActivity(detailsIntent); + Intent intent = new Intent(this, DownloadDetailsActivity.class); + intent.setData(Uri.fromParts("package", module.packageName, null)); + startActivity(intent); return true; } else if (itemId == R.id.menu_support) { NavUtil.startURL(this, Uri.parse(RepoDb.getModuleSupport(module.packageName))); @@ -427,8 +428,8 @@ public class ModulesActivity extends BaseActivity implements ModuleUtil.ModuleLi intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); try { startActivity(intent); - } catch (Exception ex) { - ex.printStackTrace(); + } catch (Exception e) { + e.printStackTrace(); } return true; } else if (itemId == R.id.menu_app_info) { @@ -438,10 +439,22 @@ public class ModulesActivity extends BaseActivity implements ModuleUtil.ModuleLi startActivity(new Intent(Intent.ACTION_UNINSTALL_PACKAGE, Uri.fromParts("package", module.packageName, null))); return true; } else if (itemId == R.id.menu_scope) { - Intent scopeIntent = new Intent(this, ModuleScopeActivity.class); - scopeIntent.putExtra("modulePackageName", module.packageName); - scopeIntent.putExtra("moduleName", module.getAppName()); - startActivity(scopeIntent); + if (App.supportScope()) { + Intent intent = new Intent(this, ModuleScopeActivity.class); + intent.putExtra("modulePackageName", module.packageName); + intent.putExtra("moduleName", module.getAppName()); + startActivity(intent); + } else { + new MaterialAlertDialogBuilder(this) + .setMessage(R.string.scope_not_supported) + .setPositiveButton(R.string.download_view_download, (dialog, which) -> { + Intent intent = new Intent(); + intent.setClass(this, EdDownloadActivity.class); + startActivity(intent); + }) + .setNegativeButton(android.R.string.cancel, null) + .show(); + } return true; } return super.onContextItemSelected(item); @@ -528,9 +541,6 @@ 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/ModuleUtil.java b/app/src/main/java/org/meowcat/edxposed/manager/util/ModuleUtil.java index 50652360..31f44afd 100644 --- a/app/src/main/java/org/meowcat/edxposed/manager/util/ModuleUtil.java +++ b/app/src/main/java/org/meowcat/edxposed/manager/util/ModuleUtil.java @@ -212,7 +212,7 @@ public final class ModuleUtil { public synchronized void updateModulesList(boolean showToast, ActivityModulesBinding binding) { try { Log.i(App.TAG, "ModuleUtil -> updating modules.list"); - int installedXposedVersion = App.getXposedVersion(); + int installedXposedVersion = App.getActiveXposedVersion(); if (!App.getPreferences().getBoolean("skip_xposedminversion_check", false) && installedXposedVersion <= 0 && showToast) { if (binding != null) { Snackbar.make(binding.snackbar, R.string.notinstalled, Snackbar.LENGTH_SHORT).show(); @@ -332,7 +332,7 @@ public final class ModuleUtil { this.minVersion = 0; this.description = ""; } else { - int version = App.getXposedVersion(); + int version = App.getActiveXposedVersion(); if (version > 0 && App.getPreferences().getBoolean("skip_xposedminversion_check", false)) { this.minVersion = version; } else { 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 deleted file mode 100644 index 41e1505f..00000000 --- a/app/src/main/java/org/meowcat/edxposed/manager/util/Version.java +++ /dev/null @@ -1,29 +0,0 @@ -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 diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml index 53536056..7ae34421 100644 --- a/app/src/main/res/values-zh-rCN/strings.xml +++ b/app/src/main/res/values-zh-rCN/strings.xml @@ -312,4 +312,5 @@ 禁用绕过隐藏 API 的限制将会通过某些检测(如Snapchat)\n警告: 启用此选项可能会使某些功能无法正常工作,或出现一些其他问题 作用域 启用作用域 + 您安装的 EdXposed 版本不支持模块作用域,下载新版本? diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 874d5275..a91cc249 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -343,4 +343,5 @@ Disable hidden API restrictions bypass will pass some detection (eg Snapchat), these APIs are disabled by default\nWARNING: Enable this option may cause some features do not work properly, or some other problems Scope Enable scope + The version of EdXposed you installed does not support module scope, download new version?