Fix version check

This commit is contained in:
NekoInverter 2020-11-25 08:55:04 +08:00
parent 2fbab81e39
commit fa56e8e02a
No known key found for this signature in database
GPG Key ID: 280D6CCCF95715F9
8 changed files with 36 additions and 69 deletions

View File

@ -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;

View File

@ -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();

View File

@ -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 {

View File

@ -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);

View File

@ -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 {

View File

@ -1,29 +0,0 @@
package org.meowcat.edxposed.manager.util;
import androidx.annotation.NonNull;
public class Version implements Comparable<Version> {
@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;
}
}

View File

@ -312,4 +312,5 @@
<string name="settings_summary_disable_hidden_api_bypass">禁用绕过隐藏 API 的限制将会通过某些检测如Snapchat\n<b>警告:</b> 启用此选项可能会使某些功能无法正常工作,或出现一些其他问题</string>
<string name="menu_scope">作用域</string>
<string name="enable_scope">启用作用域</string>
<string name="scope_not_supported">您安装的 EdXposed 版本不支持模块作用域,下载新版本?</string>
</resources>

View File

@ -343,4 +343,5 @@
<string name="settings_summary_disable_hidden_api_bypass">Disable hidden API restrictions bypass will pass some detection (eg Snapchat), these APIs are disabled by default\n<b>WARNING:</b> Enable this option may cause some features do not work properly, or some other problems</string>
<string name="menu_scope">Scope</string>
<string name="enable_scope">Enable scope</string>
<string name="scope_not_supported">The version of EdXposed you installed does not support module scope, download new version?</string>
</resources>