Fix version check
This commit is contained in:
parent
2fbab81e39
commit
fa56e8e02a
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
|
|
|
|||
|
|
@ -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 {
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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 {
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
@ -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>
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
|
|||
Loading…
Reference in New Issue