|
|
@@ -156,164 +156,16 @@ public final class LoginActivity extends AppActivity implements KeyboardWatcher. |
|
|
|
// } |
|
|
|
// }); |
|
|
|
setDataToView(); |
|
|
|
// 版本检查移到登录成功后进行,避免被主界面覆盖 |
|
|
|
// updateApp(); |
|
|
|
// 恢复版本检查到initView中,在应用启动时立即检查 |
|
|
|
updateApp(); |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* 登录成功后检查版本更新 |
|
|
|
* 登录成功后直接跳转主界面 |
|
|
|
*/ |
|
|
|
private void checkVersionBeforeMainActivity() { |
|
|
|
Log.i("版本检查", "登录成功,开始检查版本更新"); |
|
|
|
MyRetrofit.newInstanceGZ(IFCode.IFCODE148, new ResultBean.BizContent<>(), new MyRetrofit.ReturnResult() { |
|
|
|
@Override |
|
|
|
public void onSuccess(ResultBean resultBean, ResultBean.BizContent bizContent) { |
|
|
|
Log.i("版本检查", "版本查询接口返回成功: " + JSONObject.toJSONString(resultBean)); |
|
|
|
|
|
|
|
// 检查接口返回是否成功 |
|
|
|
if (resultBean.getCode() != 0) { |
|
|
|
Log.e("版本检查", "版本查询接口返回失败,code: " + resultBean.getCode() + ", message: " + resultBean.getMessage()); |
|
|
|
// 版本检查失败,直接跳转主界面 |
|
|
|
jumpToMainActivity(); |
|
|
|
return; |
|
|
|
} |
|
|
|
|
|
|
|
// 检查返回数据是否为空 |
|
|
|
if (bizContent == null) { |
|
|
|
Log.e("版本检查", "版本查询接口返回数据为空"); |
|
|
|
// 版本检查失败,直接跳转主界面 |
|
|
|
jumpToMainActivity(); |
|
|
|
return; |
|
|
|
} |
|
|
|
|
|
|
|
String serverVersion = bizContent.getVersion(); |
|
|
|
String currentVersion = AppConfig.getVersionName(); |
|
|
|
|
|
|
|
Log.i("版本检查", "当前版本: " + currentVersion + ", 服务器版本: " + serverVersion); |
|
|
|
|
|
|
|
// 比较版本号:1表示服务器版本高于当前版本,需要更新 |
|
|
|
int versionCompare = FileImageTool.compareVersion(serverVersion, currentVersion); |
|
|
|
|
|
|
|
if (versionCompare == 1) { |
|
|
|
// 服务器版本高于当前版本,需要更新 |
|
|
|
Log.i("版本检查", "检测到新版本,开始处理更新逻辑"); |
|
|
|
|
|
|
|
boolean isForceUpdate = bizContent.getIsUpLevel() == 1; |
|
|
|
String updateMessage = bizContent.getMessage(); |
|
|
|
String originalUrl = bizContent.getUrl(); |
|
|
|
final String downloadUrl; |
|
|
|
|
|
|
|
// 检查并补全下载URL的协议头 |
|
|
|
if (!FunHelper.isEmpty(originalUrl)) { |
|
|
|
if (!originalUrl.startsWith("http://") && !originalUrl.startsWith("https://")) { |
|
|
|
// 如果是相对路径,需要拼接完整的URL |
|
|
|
String baseUrl = MyRetrofit.URL_APP_IMG; |
|
|
|
if (!baseUrl.endsWith("/") && !originalUrl.startsWith("/")) { |
|
|
|
baseUrl += "/"; |
|
|
|
} |
|
|
|
downloadUrl = baseUrl + originalUrl; |
|
|
|
Log.i("版本检查", "补全下载URL: " + downloadUrl); |
|
|
|
} else { |
|
|
|
downloadUrl = originalUrl; |
|
|
|
} |
|
|
|
} else { |
|
|
|
downloadUrl = originalUrl; |
|
|
|
} |
|
|
|
|
|
|
|
Log.i("版本检查", "更新信息 - 强制更新: " + isForceUpdate + ", 更新说明: " + updateMessage + ", 下载地址: " + downloadUrl); |
|
|
|
|
|
|
|
if (isForceUpdate) { |
|
|
|
// 强制更新:必须更新才能继续使用 |
|
|
|
Log.i("版本检查", "强制更新模式,显示更新对话框"); |
|
|
|
Log.i("版本检查", "Activity状态: " + (isFinishing() ? "finishing" : "running") + ", isDestroyed: " + isDestroyed()); |
|
|
|
|
|
|
|
try { |
|
|
|
// 先测试简单的Toast |
|
|
|
// Log.i("版本检查", "测试Toast显示"); |
|
|
|
// runOnUiThread(() -> { |
|
|
|
// toast("检测到新版本 " + serverVersion + ",需要强制更新"); |
|
|
|
// }); |
|
|
|
|
|
|
|
// 延迟一下再显示对话框,确保Activity完全初始化 |
|
|
|
postDelayed(() -> { |
|
|
|
runOnUiThread(() -> { |
|
|
|
try { |
|
|
|
Log.i("版本检查", "开始创建UpdateDialog"); |
|
|
|
UpdateDialog.Builder builder = new UpdateDialog.Builder(getActivity()); |
|
|
|
Log.i("版本检查", "UpdateDialog.Builder创建成功"); |
|
|
|
|
|
|
|
builder.setVersionName(serverVersion); |
|
|
|
Log.i("版本检查", "设置版本名: " + serverVersion); |
|
|
|
|
|
|
|
builder.setForceUpdate(true); |
|
|
|
Log.i("版本检查", "设置强制更新: true"); |
|
|
|
|
|
|
|
builder.setUpdateLog(updateMessage); |
|
|
|
Log.i("版本检查", "设置更新日志: " + updateMessage); |
|
|
|
|
|
|
|
builder.setDownloadUrl(downloadUrl); |
|
|
|
Log.i("版本检查", "设置下载地址: " + downloadUrl); |
|
|
|
|
|
|
|
Log.i("版本检查", "准备显示对话框"); |
|
|
|
builder.show(); |
|
|
|
Log.i("版本检查", "对话框显示命令已执行"); |
|
|
|
} catch (Exception e) { |
|
|
|
Log.e("版本检查", "显示更新对话框时发生异常", e); |
|
|
|
e.printStackTrace(); |
|
|
|
} |
|
|
|
}); |
|
|
|
}, 1000); // 延迟1秒 |
|
|
|
} catch (Exception e) { |
|
|
|
Log.e("版本检查", "创建更新对话框时发生异常", e); |
|
|
|
e.printStackTrace(); |
|
|
|
} |
|
|
|
} else { |
|
|
|
// 非强制更新:提示用户有新版本,但不强制更新 |
|
|
|
Log.i("版本检查", "非强制更新模式,显示提示信息"); |
|
|
|
new MessageDialog.Builder(getActivity()) |
|
|
|
.setTitle("发现新版本") |
|
|
|
.setMessage("发现新版本 " + serverVersion + ",是否立即更新?\n\n" + updateMessage) |
|
|
|
.setConfirm("立即更新") |
|
|
|
.setCancel("稍后再说") |
|
|
|
.setListener(new MessageDialog.OnListener() { |
|
|
|
@Override |
|
|
|
public void onConfirm(BaseDialog dialog) { |
|
|
|
// 用户选择更新,显示更新对话框 |
|
|
|
new UpdateDialog.Builder(getActivity()) |
|
|
|
.setVersionName(serverVersion) |
|
|
|
.setForceUpdate(false) |
|
|
|
.setUpdateLog(updateMessage) |
|
|
|
.setDownloadUrl(downloadUrl) |
|
|
|
.show(); |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
public void onCancel(BaseDialog dialog) { |
|
|
|
// 用户选择稍后再说,跳转主界面 |
|
|
|
Log.i("版本检查", "用户选择稍后更新,跳转主界面"); |
|
|
|
jumpToMainActivity(); |
|
|
|
} |
|
|
|
}) |
|
|
|
.show(); |
|
|
|
} |
|
|
|
} else if (versionCompare == 0) { |
|
|
|
// 版本相同,无需更新,直接跳转主界面 |
|
|
|
Log.i("版本检查", "当前版本已是最新版本,跳转主界面"); |
|
|
|
jumpToMainActivity(); |
|
|
|
} else { |
|
|
|
// 当前版本高于服务器版本(理论上不应该发生) |
|
|
|
Log.w("版本检查", "当前版本高于服务器版本,可能是测试环境,跳转主界面"); |
|
|
|
jumpToMainActivity(); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
public void onError(Response<Result> resp) { |
|
|
|
Log.e("版本检查", "版本查询接口调用失败: " + (resp != null ? resp.message() : "未知错误")); |
|
|
|
// 版本检查失败,直接跳转主界面 |
|
|
|
jumpToMainActivity(); |
|
|
|
} |
|
|
|
}); |
|
|
|
private void loginSuccess() { |
|
|
|
Log.i("登录", "登录成功,跳转主界面"); |
|
|
|
jumpToMainActivity(); |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
@@ -759,8 +611,8 @@ public final class LoginActivity extends AppActivity implements KeyboardWatcher. |
|
|
|
}) |
|
|
|
.show(); |
|
|
|
} else { |
|
|
|
// 登录成功后,先检查版本更新,再跳转主界面 |
|
|
|
checkVersionBeforeMainActivity(); |
|
|
|
// 登录成功后,直接跳转主界面 |
|
|
|
loginSuccess(); |
|
|
|
} |
|
|
|
// } |
|
|
|
// |