修复升级bug
diff --git a/app/src/main/java/com/supwisdom/activities/upgrade/UpgradeActivity.kt b/app/src/main/java/com/supwisdom/activities/upgrade/UpgradeActivity.kt
index 38cbf5a..91f304d 100644
--- a/app/src/main/java/com/supwisdom/activities/upgrade/UpgradeActivity.kt
+++ b/app/src/main/java/com/supwisdom/activities/upgrade/UpgradeActivity.kt
@@ -32,6 +32,7 @@
private lateinit var vServerUrl: TextView
private lateinit var vPosOldVersion: TextView
private lateinit var vPosVersion: TextView
+ @Volatile
private var isUpgrading = false
@Volatile
private var keyActive = true
@@ -72,8 +73,6 @@
finish()
KeyEvent.KEYCODE_ENTER -> {
//ok
- isUpgrading = true
- AuxScreenController.getInstance().refreshContent(Arrays.asList<String>("正在升级", "请稍等..."))
asyncUpgrade()
}
}
@@ -133,12 +132,16 @@
* 开始下载apk
*/
fun asyncUpgrade() {
- ThreadPool.getDownloadPool().execute(Runnable {
- EpayUpgradeApi(upgradeApiCallback).upgrade(
- pos.getConfigPara()!!.devphyid!!,
- CommonUtil.getVersionName(this)
- )
- })
+ if (!isUpgrading) {
+ isUpgrading = true
+ AuxScreenController.getInstance().refreshContent(Arrays.asList<String>("正在升级", "请稍等..."))
+ ThreadPool.getDownloadPool().execute(Runnable {
+ EpayUpgradeApi(upgradeApiCallback).upgrade(
+ pos.getConfigPara()!!.devphyid!!,
+ CommonUtil.getVersionName(this)
+ )
+ })
+ }
}
/**
@@ -162,10 +165,10 @@
private var counter: ContinuePressTimer? = null
private fun resetCounter(timems: Long) {
+ counter?.cancel()
if (counter == null) {
counter = ContinuePressTimer(timems, 100)
}
- counter!!.cancel()
keyActive = false
counter!!.start()
}
diff --git a/app/src/main/java/com/supwisdom/activities/upgrade/mode/EpayUpgradeApi.kt b/app/src/main/java/com/supwisdom/activities/upgrade/mode/EpayUpgradeApi.kt
index 2225779..304a6a7 100644
--- a/app/src/main/java/com/supwisdom/activities/upgrade/mode/EpayUpgradeApi.kt
+++ b/app/src/main/java/com/supwisdom/activities/upgrade/mode/EpayUpgradeApi.kt
@@ -20,18 +20,18 @@
*/
class EpayUpgradeApi constructor(callbackInterface: CallbackInterface) {
private val TIMEOUT = 5 * 1000// 超时
- private val callbackInterface = callbackInterface
+ private val callback = callbackInterface
private val POSID = "posa711dali"
fun upgrade(devphyid: String, version: String) {
val resp = getAppVersion(devphyid, version)
if (resp.retcode != PublicDef.SUCCESS) {
- callbackInterface.failed(resp.retmsg!!)
+ callback.failed(resp.retmsg!!)
return
}
val updateFile = FileUtil.getUpdateFile("$POSID.zip")
if (updateFile == null) {
- callbackInterface.failed("创建本地文件失败")
+ callback.failed("创建本地文件失败")
return
}
if (!downloadUpdateFile(resp.upgrade_url!!, updateFile, resp.upgrade_version!!)) {
@@ -70,7 +70,7 @@
totalSize = urlConnection.contentLength
if (urlConnection.responseCode != HttpStatus.SC_OK) {
urlConnection.disconnect()
- callbackInterface.failed("下载文件失败:错误码=${urlConnection.responseCode}")
+ callback.failed("下载文件失败:错误码=${urlConnection.responseCode}")
return false
}
val inputStream = urlConnection.inputStream
@@ -89,7 +89,7 @@
if (pro - downStep >= 1) {
downStep++
CommonUtil.doSleep(100)
- callbackInterface.progresss(pro)
+ callback.progresss(pro)
}
}
urlConnection.disconnect()
@@ -98,7 +98,7 @@
return true
} catch (e: Exception) {
e.printStackTrace()
- callbackInterface.failed("下载文件异常:${e.message}")
+ callback.failed("下载文件异常:${e.message}")
return false
}
}
@@ -110,33 +110,33 @@
ZipUtil.unzip(zipFilePath, unZipFilePath, false)
val apkFile = File("$unZipFilePath/$POSID.apk")
if (!apkFile.exists()) {
- callbackInterface.failed("未找到文件$POSID.apk")
+ callback.failed("未找到文件$POSID.apk")
return false
}
val fileHash256 = CryptUtil.HASH256(FileInputStream(apkFile), "nzoqPYMIu91VViA/mEIG5FtJXi8=")
if (fileHash256 == null) {
- callbackInterface.failed("计算文件校验数据错误")
+ callback.failed("计算文件校验数据错误")
return false
}
val signFile = FileInputStream("$unZipFilePath/hash256.sign")
val buffer = ByteArray(1024)
val length = signFile.read(buffer, 0, buffer.size)
if (length < 0) {
- callbackInterface.failed("读取校验文件失败")
+ callback.failed("读取校验文件失败")
return false
}
signFile.close()
val signHash256 = String(Arrays.copyOfRange(buffer, 0, length))
if (!fileHash256.equals(signHash256, ignoreCase = true)) {
- callbackInterface.failed("文件校验错误")
+ callback.failed("文件校验错误")
return false
}
- callbackInterface.success("$unZipFilePath/$POSID.apk")
+ callback.success("$unZipFilePath/$POSID.apk")
return true
} catch (e: Exception) {
e.printStackTrace()
- callbackInterface.failed("文件校验异常:${e.message}")
+ callback.failed("文件校验异常:${e.message}")
return false
}
}
@@ -149,20 +149,23 @@
.setParameter("sourcetype", "pos")
val resp = YktSession.getInstance().sendYktRequestPost("/api/pos/globalparam", "", params)
- ?: return UpgradeInfoRetBean(PublicDef.ERROR, "获取版本号网络超时")
+ ?: return UpgradeInfoRetBean(PublicDef.ERROR, "获取版本超时")
if (resp.retcode != HttpStatus.SC_OK) {
- return UpgradeInfoRetBean(resp.retcode, resp.retmsg)
+ return UpgradeInfoRetBean(resp.retcode, "获取版本错误码=${resp.retcode}")
}
return try {
val bean = GsonUtil.GsonToBean(resp.retjson!!, UpgradeInfoRetBean::class.java)
+ if (bean.retcode != PublicDef.SUCCESS) {
+ return UpgradeInfoRetBean(resp.retcode, "获取版本错误=" + bean.retmsg)
+ }
when {
- TextUtils.isEmpty(bean.upgrade_version) -> UpgradeInfoRetBean(PublicDef.ERROR, "获取版本号为空")
- TextUtils.isEmpty(bean.upgrade_url) -> UpgradeInfoRetBean(PublicDef.ERROR, "获取升级链接为空")
+ TextUtils.isEmpty(bean.upgrade_version) -> UpgradeInfoRetBean(PublicDef.ERROR, "获取版本为空")
+ TextUtils.isEmpty(bean.upgrade_url) -> UpgradeInfoRetBean(PublicDef.ERROR, "获取升级地址为空")
else -> bean
}
} catch (e: Exception) {
e.printStackTrace()
- UpgradeInfoRetBean(PublicDef.ERROR, "获取版本号JSON异常:${e.message}")
+ UpgradeInfoRetBean(PublicDef.ERROR, "获取版本JSON异常:${e.message}")
}
}