Browse Source

升级检测 - 改为登录前检测、改回老接口名称

GZBranch
wufasong 1 day ago
parent
commit
d1b5895e51

+ 1
- 1
app/src/main/java/com/huntersun/vkyes/etcopencard/project/api/bean/IFCode.java View File

@@ -115,7 +115,7 @@ public class IFCode {
public static final String IFCODE_PRODUCT_EQUITY = "iaw/issue/product/pageDetail";//产品详情查询
public static final String IFCODE56 = "56"; //订单支付下单接口
public static final String IFCODE57 = "57"; //订单支付结果查询接口
public static final String IFCODE148 = "iaw/api/operation/appVersion/findCurrentAppVersion"; //apk 版本查询接口
public static final String IFCODE148 = "iaw/api/app/versionQuery"; //apk 版本查询接口
public static final String IFCODE149 = "149"; //根据订单ID获取部分订单信息(车辆信息、用户信息)
public static final String IFCODE150 = "iaw/app/issue/order/goodstobeshippedquery"; //查询全部待发货订单
public static final String IFCODE155 = "iaw/issue/order/orderReceiveGoods"; //订单完成收货

+ 8
- 156
app/src/main/java/com/huntersun/vkyes/etcopencard/src/ui/activity/LoginActivity.java View File

@@ -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();
}
// }
//

Loading…
Cancel
Save