diff --git a/app/src/main/java/org/lsposed/manager/ui/activity/base/BaseActivity.java b/app/src/main/java/org/lsposed/manager/ui/activity/base/BaseActivity.java
index 067a4d20..62eb8dfa 100644
--- a/app/src/main/java/org/lsposed/manager/ui/activity/base/BaseActivity.java
+++ b/app/src/main/java/org/lsposed/manager/ui/activity/base/BaseActivity.java
@@ -34,8 +34,10 @@ import com.google.android.material.dialog.MaterialAlertDialogBuilder;
import org.lsposed.manager.BuildConfig;
import org.lsposed.manager.ConfigManager;
import org.lsposed.manager.R;
+import org.lsposed.manager.ui.dialog.FlashDialogBuilder;
import org.lsposed.manager.util.NavUtil;
import org.lsposed.manager.util.ThemeUtil;
+import org.lsposed.manager.util.UpdateUtil;
import rikka.core.util.ResourceUtils;
import rikka.material.app.MaterialActivity;
@@ -51,14 +53,17 @@ public class BaseActivity extends MaterialActivity {
// make sure the versions are consistent
if (BuildConfig.DEBUG) return;
if (!ConfigManager.isBinderAlive()) return;
- var version = ConfigManager.getXposedVersionName();
- if (BuildConfig.VERSION_NAME.equals(version)) return;
+ var version = ConfigManager.getXposedVersionCode();
+ if (BuildConfig.VERSION_CODE == version) return;
new MaterialAlertDialogBuilder(this)
- .setMessage(BuildConfig.VERSION_NAME.compareTo(version) > 0 ?
- R.string.outdated_core : R.string.outdated_manager)
+ .setMessage(getString(R.string.version_mismatch, version, BuildConfig.VERSION_CODE))
.setPositiveButton(android.R.string.ok, (dialog, id) -> {
- NavUtil.startURL(this, getString(R.string.about_source));
- finish();
+ if (UpdateUtil.canInstall()) {
+ new FlashDialogBuilder(this, (d, i) -> finish()).show();
+ } else {
+ NavUtil.startURL(this, getString(R.string.about_source));
+ finish();
+ }
})
.setCancelable(false)
.show();
diff --git a/app/src/main/java/org/lsposed/manager/ui/dialog/FlashDialogBuilder.java b/app/src/main/java/org/lsposed/manager/ui/dialog/FlashDialogBuilder.java
index 97928116..feca0848 100644
--- a/app/src/main/java/org/lsposed/manager/ui/dialog/FlashDialogBuilder.java
+++ b/app/src/main/java/org/lsposed/manager/ui/dialog/FlashDialogBuilder.java
@@ -3,6 +3,7 @@ package org.lsposed.manager.ui.dialog;
import static org.lsposed.manager.App.TAG;
import android.content.Context;
+import android.content.DialogInterface;
import android.graphics.Typeface;
import android.os.ParcelFileDescriptor;
import android.text.method.LinkMovementMethod;
@@ -33,7 +34,7 @@ public class FlashDialogBuilder extends BlurBehindDialogBuilder {
private final TextView textView;
private final BorderNestedScrollView rootView;
- public FlashDialogBuilder(@NonNull Context context) {
+ public FlashDialogBuilder(@NonNull Context context, DialogInterface.OnClickListener cancel) {
super(context);
var pref = App.getPreferences();
var notes = pref.getString("release_notes", "");
@@ -51,7 +52,7 @@ public class FlashDialogBuilder extends BlurBehindDialogBuilder {
rootView = binding.getRoot();
setView(rootView);
- setNegativeButton(android.R.string.cancel, null);
+ setNegativeButton(android.R.string.cancel, cancel);
setPositiveButton(R.string.install, null);
setCancelable(false);
}
diff --git a/app/src/main/java/org/lsposed/manager/ui/fragment/HomeFragment.java b/app/src/main/java/org/lsposed/manager/ui/fragment/HomeFragment.java
index 83c67948..842f05fb 100644
--- a/app/src/main/java/org/lsposed/manager/ui/fragment/HomeFragment.java
+++ b/app/src/main/java/org/lsposed/manager/ui/fragment/HomeFragment.java
@@ -87,7 +87,7 @@ public class HomeFragment extends BaseFragment implements RepoLoader.Listener {
}
} else {
if (UpdateUtil.canInstall()) {
- new FlashDialogBuilder(activity).show();
+ new FlashDialogBuilder(activity, null).show();
return;
}
NavUtil.startURL(activity, getString(R.string.about_source));
@@ -95,7 +95,7 @@ public class HomeFragment extends BaseFragment implements RepoLoader.Listener {
});
binding.status.setOnLongClickListener(v -> {
if (UpdateUtil.canInstall()) {
- new FlashDialogBuilder(activity).show();
+ new FlashDialogBuilder(activity, null).show();
return true;
}
return false;
diff --git a/app/src/main/java/org/lsposed/manager/util/UpdateUtil.java b/app/src/main/java/org/lsposed/manager/util/UpdateUtil.java
index 4b20c584..1240039e 100644
--- a/app/src/main/java/org/lsposed/manager/util/UpdateUtil.java
+++ b/app/src/main/java/org/lsposed/manager/util/UpdateUtil.java
@@ -73,7 +73,7 @@ public class UpdateUtil {
.apply();
var updatedAt = Instant.parse(assets.get("updated_at").getAsString());
var downloadUrl = assets.get("browser_download_url").getAsString();
- var nowZipTime = pref.getLong("zip_time", BuildConfig.BUILD_TIME);
+ var nowZipTime = pref.getLong("zip_time", 0);
if (updatedAt.isAfter(Instant.ofEpochSecond(nowZipTime))) {
var zip = downloadNewZipSync(downloadUrl, name);
var size = assets.get("size").getAsLong();
@@ -124,8 +124,6 @@ public class UpdateUtil {
if (!ConfigManager.isBinderAlive()) return false;
var pref = App.getPreferences();
var zip = pref.getString("zip_file", null);
- if (zip == null || !new File(zip).isFile()) return false;
- var zipTime = pref.getLong("zip_time", BuildConfig.BUILD_TIME);
- return zipTime > BuildConfig.BUILD_TIME;
+ return zip != null && new File(zip).isFile();
}
}
diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml
index f1fda5d1..41ab21eb 100644
--- a/app/src/main/res/values-zh-rCN/strings.xml
+++ b/app/src/main/res/values-zh-rCN/strings.xml
@@ -195,8 +195,7 @@
没有更旧的版本
模块仓库加载失败:%s
- LSPosed 应用的版本高于框架。请更新 LSPosed 框架。
- LSPosed 框架的版本高于应用。请从 /data/adb/lspd/manager.apk 更新 LSPosed 应用。
+ LSPosed 框架的版本(%1$d)与管理器(%2$d)不同。请重装 LSPosed。
应用出现未知错误
反馈该问题到
发送崩溃信息
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 42040e09..7912c0b9 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -206,8 +206,7 @@
Failed to load module repo: %s
- LSPosed app is newer than framework. Please update LSPosed framework.
- LSPosed framework is newer than app. Please update the app from /data/adb/lspd/manager.apk manually.
+ The version of the LSPosed framework (%1$d) does not match manager (%2$d). Please reinstall LSPosed.
Manager crashed
report this to
Send crash info