[app] Check version code mismatch (#1386)
This commit is contained in:
parent
b5ba03318b
commit
872dcf4ba8
|
|
@ -34,8 +34,10 @@ import com.google.android.material.dialog.MaterialAlertDialogBuilder;
|
||||||
import org.lsposed.manager.BuildConfig;
|
import org.lsposed.manager.BuildConfig;
|
||||||
import org.lsposed.manager.ConfigManager;
|
import org.lsposed.manager.ConfigManager;
|
||||||
import org.lsposed.manager.R;
|
import org.lsposed.manager.R;
|
||||||
|
import org.lsposed.manager.ui.dialog.FlashDialogBuilder;
|
||||||
import org.lsposed.manager.util.NavUtil;
|
import org.lsposed.manager.util.NavUtil;
|
||||||
import org.lsposed.manager.util.ThemeUtil;
|
import org.lsposed.manager.util.ThemeUtil;
|
||||||
|
import org.lsposed.manager.util.UpdateUtil;
|
||||||
|
|
||||||
import rikka.core.util.ResourceUtils;
|
import rikka.core.util.ResourceUtils;
|
||||||
import rikka.material.app.MaterialActivity;
|
import rikka.material.app.MaterialActivity;
|
||||||
|
|
@ -51,14 +53,17 @@ public class BaseActivity extends MaterialActivity {
|
||||||
// make sure the versions are consistent
|
// make sure the versions are consistent
|
||||||
if (BuildConfig.DEBUG) return;
|
if (BuildConfig.DEBUG) return;
|
||||||
if (!ConfigManager.isBinderAlive()) return;
|
if (!ConfigManager.isBinderAlive()) return;
|
||||||
var version = ConfigManager.getXposedVersionName();
|
var version = ConfigManager.getXposedVersionCode();
|
||||||
if (BuildConfig.VERSION_NAME.equals(version)) return;
|
if (BuildConfig.VERSION_CODE == version) return;
|
||||||
new MaterialAlertDialogBuilder(this)
|
new MaterialAlertDialogBuilder(this)
|
||||||
.setMessage(BuildConfig.VERSION_NAME.compareTo(version) > 0 ?
|
.setMessage(getString(R.string.version_mismatch, version, BuildConfig.VERSION_CODE))
|
||||||
R.string.outdated_core : R.string.outdated_manager)
|
|
||||||
.setPositiveButton(android.R.string.ok, (dialog, id) -> {
|
.setPositiveButton(android.R.string.ok, (dialog, id) -> {
|
||||||
NavUtil.startURL(this, getString(R.string.about_source));
|
if (UpdateUtil.canInstall()) {
|
||||||
finish();
|
new FlashDialogBuilder(this, (d, i) -> finish()).show();
|
||||||
|
} else {
|
||||||
|
NavUtil.startURL(this, getString(R.string.about_source));
|
||||||
|
finish();
|
||||||
|
}
|
||||||
})
|
})
|
||||||
.setCancelable(false)
|
.setCancelable(false)
|
||||||
.show();
|
.show();
|
||||||
|
|
|
||||||
|
|
@ -3,6 +3,7 @@ package org.lsposed.manager.ui.dialog;
|
||||||
import static org.lsposed.manager.App.TAG;
|
import static org.lsposed.manager.App.TAG;
|
||||||
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
|
import android.content.DialogInterface;
|
||||||
import android.graphics.Typeface;
|
import android.graphics.Typeface;
|
||||||
import android.os.ParcelFileDescriptor;
|
import android.os.ParcelFileDescriptor;
|
||||||
import android.text.method.LinkMovementMethod;
|
import android.text.method.LinkMovementMethod;
|
||||||
|
|
@ -33,7 +34,7 @@ public class FlashDialogBuilder extends BlurBehindDialogBuilder {
|
||||||
private final TextView textView;
|
private final TextView textView;
|
||||||
private final BorderNestedScrollView rootView;
|
private final BorderNestedScrollView rootView;
|
||||||
|
|
||||||
public FlashDialogBuilder(@NonNull Context context) {
|
public FlashDialogBuilder(@NonNull Context context, DialogInterface.OnClickListener cancel) {
|
||||||
super(context);
|
super(context);
|
||||||
var pref = App.getPreferences();
|
var pref = App.getPreferences();
|
||||||
var notes = pref.getString("release_notes", "");
|
var notes = pref.getString("release_notes", "");
|
||||||
|
|
@ -51,7 +52,7 @@ public class FlashDialogBuilder extends BlurBehindDialogBuilder {
|
||||||
rootView = binding.getRoot();
|
rootView = binding.getRoot();
|
||||||
setView(rootView);
|
setView(rootView);
|
||||||
|
|
||||||
setNegativeButton(android.R.string.cancel, null);
|
setNegativeButton(android.R.string.cancel, cancel);
|
||||||
setPositiveButton(R.string.install, null);
|
setPositiveButton(R.string.install, null);
|
||||||
setCancelable(false);
|
setCancelable(false);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -87,7 +87,7 @@ public class HomeFragment extends BaseFragment implements RepoLoader.Listener {
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (UpdateUtil.canInstall()) {
|
if (UpdateUtil.canInstall()) {
|
||||||
new FlashDialogBuilder(activity).show();
|
new FlashDialogBuilder(activity, null).show();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
NavUtil.startURL(activity, getString(R.string.about_source));
|
NavUtil.startURL(activity, getString(R.string.about_source));
|
||||||
|
|
@ -95,7 +95,7 @@ public class HomeFragment extends BaseFragment implements RepoLoader.Listener {
|
||||||
});
|
});
|
||||||
binding.status.setOnLongClickListener(v -> {
|
binding.status.setOnLongClickListener(v -> {
|
||||||
if (UpdateUtil.canInstall()) {
|
if (UpdateUtil.canInstall()) {
|
||||||
new FlashDialogBuilder(activity).show();
|
new FlashDialogBuilder(activity, null).show();
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
|
|
|
||||||
|
|
@ -73,7 +73,7 @@ public class UpdateUtil {
|
||||||
.apply();
|
.apply();
|
||||||
var updatedAt = Instant.parse(assets.get("updated_at").getAsString());
|
var updatedAt = Instant.parse(assets.get("updated_at").getAsString());
|
||||||
var downloadUrl = assets.get("browser_download_url").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))) {
|
if (updatedAt.isAfter(Instant.ofEpochSecond(nowZipTime))) {
|
||||||
var zip = downloadNewZipSync(downloadUrl, name);
|
var zip = downloadNewZipSync(downloadUrl, name);
|
||||||
var size = assets.get("size").getAsLong();
|
var size = assets.get("size").getAsLong();
|
||||||
|
|
@ -124,8 +124,6 @@ public class UpdateUtil {
|
||||||
if (!ConfigManager.isBinderAlive()) return false;
|
if (!ConfigManager.isBinderAlive()) return false;
|
||||||
var pref = App.getPreferences();
|
var pref = App.getPreferences();
|
||||||
var zip = pref.getString("zip_file", null);
|
var zip = pref.getString("zip_file", null);
|
||||||
if (zip == null || !new File(zip).isFile()) return false;
|
return zip != null && new File(zip).isFile();
|
||||||
var zipTime = pref.getLong("zip_time", BuildConfig.BUILD_TIME);
|
|
||||||
return zipTime > BuildConfig.BUILD_TIME;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -195,8 +195,7 @@
|
||||||
<string name="module_release_no_more">没有更旧的版本</string>
|
<string name="module_release_no_more">没有更旧的版本</string>
|
||||||
<string name="repo_load_failed">模块仓库加载失败:%s</string>
|
<string name="repo_load_failed">模块仓库加载失败:%s</string>
|
||||||
<!-- CrashReportActivity -->
|
<!-- CrashReportActivity -->
|
||||||
<string name="outdated_core">LSPosed 应用的版本高于框架。请更新 LSPosed 框架。</string>
|
<string name="version_mismatch">LSPosed 框架的版本(%1$d)与管理器(%2$d)不同。请重装 LSPosed。</string>
|
||||||
<string name="outdated_manager">LSPosed 框架的版本高于应用。请从 /data/adb/lspd/manager.apk 更新 LSPosed 应用。</string>
|
|
||||||
<string name="manager_crashed">应用出现未知错误</string>
|
<string name="manager_crashed">应用出现未知错误</string>
|
||||||
<string name="manager_crashed_info">反馈该问题到 </string>
|
<string name="manager_crashed_info">反馈该问题到 </string>
|
||||||
<string name="send_crash_info">发送崩溃信息</string>
|
<string name="send_crash_info">发送崩溃信息</string>
|
||||||
|
|
|
||||||
|
|
@ -206,8 +206,7 @@
|
||||||
<string name="repo_load_failed">Failed to load module repo: %s</string>
|
<string name="repo_load_failed">Failed to load module repo: %s</string>
|
||||||
|
|
||||||
<!-- CrashReportActivity -->
|
<!-- CrashReportActivity -->
|
||||||
<string name="outdated_core">LSPosed app is newer than framework. Please update LSPosed framework.</string>
|
<string name="version_mismatch">The version of the LSPosed framework (%1$d) does not match manager (%2$d). Please reinstall LSPosed.</string>
|
||||||
<string name="outdated_manager">LSPosed framework is newer than app. Please update the app from /data/adb/lspd/manager.apk manually.</string>
|
|
||||||
<string name="manager_crashed">Manager crashed</string>
|
<string name="manager_crashed">Manager crashed</string>
|
||||||
<string name="manager_crashed_info">report this to </string>
|
<string name="manager_crashed_info">report this to </string>
|
||||||
<string name="send_crash_info">Send crash info</string>
|
<string name="send_crash_info">Send crash info</string>
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue