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