parent
0b739766fa
commit
e8fb887912
@ -0,0 +1,158 @@ |
|||||||
|
/* |
||||||
|
* This file is part of FYReader. |
||||||
|
* FYReader is free software: you can redistribute it and/or modify |
||||||
|
* it under the terms of the GNU General Public License as published by |
||||||
|
* the Free Software Foundation, either version 3 of the License, or |
||||||
|
* (at your option) any later version. |
||||||
|
* |
||||||
|
* FYReader is distributed in the hope that it will be useful, |
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
||||||
|
* GNU General Public License for more details. |
||||||
|
* |
||||||
|
* You should have received a copy of the GNU General Public License |
||||||
|
* along with FYReader. If not, see <https://www.gnu.org/licenses/>. |
||||||
|
* |
||||||
|
* Copyright (C) 2020 - 2022 fengyuecanzhu |
||||||
|
*/ |
||||||
|
|
||||||
|
package xyz.fycz.dynamic.fix |
||||||
|
|
||||||
|
import android.util.Log |
||||||
|
import androidx.appcompat.app.AppCompatActivity |
||||||
|
import me.fycz.maple.MapleBridge |
||||||
|
import me.fycz.maple.MapleUtils |
||||||
|
import me.fycz.maple.MethodReplacement |
||||||
|
import xyz.fycz.myreader.R |
||||||
|
import xyz.fycz.myreader.application.App |
||||||
|
import xyz.fycz.myreader.application.SysManager |
||||||
|
import xyz.fycz.myreader.common.URLCONST |
||||||
|
import xyz.fycz.myreader.util.SharedPreUtils |
||||||
|
import xyz.fycz.myreader.util.ToastUtils |
||||||
|
import xyz.fycz.myreader.util.help.StringHelper |
||||||
|
import xyz.fycz.myreader.util.utils.NetworkUtils |
||||||
|
import xyz.fycz.myreader.util.utils.OkHttpUtils |
||||||
|
import java.io.IOException |
||||||
|
|
||||||
|
/** |
||||||
|
* @author fengyue |
||||||
|
* @date 2022/7/1 15:45 |
||||||
|
*/ |
||||||
|
@AppFix([243, 244, 245, 246], ["修复检查更新失败的问题"], "2022-07-01") |
||||||
|
class App246Fix5 : AppFixHandle { |
||||||
|
override fun onFix(key: String): BooleanArray { |
||||||
|
return handleFix( |
||||||
|
key, |
||||||
|
"checkUpdateUrl" to { fxCheckUpdateUrl() }, |
||||||
|
) |
||||||
|
} |
||||||
|
|
||||||
|
fun fxCheckUpdateUrl() { |
||||||
|
MapleUtils.findAndHookMethod( |
||||||
|
App::class.java, |
||||||
|
"checkVersionByServer", |
||||||
|
AppCompatActivity::class.java, |
||||||
|
Boolean::class.java, |
||||||
|
object : MethodReplacement() { |
||||||
|
override fun replaceHookedMethod(param: MapleBridge.MethodHookParam) { |
||||||
|
checkUpdate(param.args[0] as AppCompatActivity, param.args[1] as Boolean) |
||||||
|
} |
||||||
|
} |
||||||
|
) |
||||||
|
} |
||||||
|
|
||||||
|
fun checkUpdate(activity: AppCompatActivity, isManualCheck: Boolean) { |
||||||
|
App.getApplication().newThread { |
||||||
|
try { |
||||||
|
var content = OkHttpUtils.getUpdateInfo() |
||||||
|
if (StringHelper.isEmpty(content)) { |
||||||
|
content = getBakUpdateInfo() |
||||||
|
if (StringHelper.isEmpty(content)) { |
||||||
|
if (isManualCheck || NetworkUtils.isNetWorkAvailable()) { |
||||||
|
ToastUtils.showError("检查更新失败!") |
||||||
|
} |
||||||
|
return@newThread |
||||||
|
} |
||||||
|
} |
||||||
|
val contents = content.split(";".toRegex()) |
||||||
|
val newestVersion = contents[0].substring(contents[0].indexOf(":") + 1).toInt() |
||||||
|
var isForceUpdate = contents[1].substring(contents[1].indexOf(":") + 1).toBoolean() |
||||||
|
val downloadLink = |
||||||
|
contents[2].substring(contents[2].indexOf(":") + 1).trim { it <= ' ' } |
||||||
|
val updateContent = contents[3].substring(contents[3].indexOf(":") + 1) |
||||||
|
|
||||||
|
SharedPreUtils.getInstance().putString( |
||||||
|
App.getmContext().getString(R.string.lanzousKeyStart), |
||||||
|
contents[4].substring(contents[4].indexOf(":") + 1) |
||||||
|
) |
||||||
|
val newSplashTime = contents[5].substring(contents[5].indexOf(":") + 1) |
||||||
|
val oldSplashTime = SharedPreUtils.getInstance().getString("splashTime") |
||||||
|
SharedPreUtils.getInstance() |
||||||
|
.putBoolean("needUdSI", oldSplashTime != newSplashTime) |
||||||
|
SharedPreUtils.getInstance().putString( |
||||||
|
"splashTime", |
||||||
|
contents[5].substring(contents[5].indexOf(":") + 1) |
||||||
|
) |
||||||
|
SharedPreUtils.getInstance().putString( |
||||||
|
"splashImageUrl", |
||||||
|
contents[6].substring(contents[6].indexOf(":") + 1) |
||||||
|
) |
||||||
|
SharedPreUtils.getInstance().putString( |
||||||
|
"splashImageMD5", |
||||||
|
contents[7].substring(contents[7].indexOf(":") + 1) |
||||||
|
) |
||||||
|
val forceUpdateVersion = contents[8].substring(contents[8].indexOf(":") + 1).toInt() |
||||||
|
SharedPreUtils.getInstance().putInt("forceUpdateVersion", forceUpdateVersion) |
||||||
|
val domain = contents[9].substring(contents[9].indexOf(":") + 1) |
||||||
|
SharedPreUtils.getInstance().putString("domain", domain) |
||||||
|
val pluginConfigUrl = contents[10].substring(contents[10].indexOf(":") + 1) |
||||||
|
SharedPreUtils.getInstance().putString("pluginConfigUrl", pluginConfigUrl) |
||||||
|
val versionCode = App.getVersionCode() |
||||||
|
isForceUpdate = isForceUpdate && forceUpdateVersion > versionCode |
||||||
|
if (!StringHelper.isEmpty(downloadLink)) { |
||||||
|
SharedPreUtils.getInstance() |
||||||
|
.putString(App.getmContext().getString(R.string.downloadLink), downloadLink) |
||||||
|
} else { |
||||||
|
SharedPreUtils.getInstance().putString( |
||||||
|
App.getmContext().getString(R.string.downloadLink), |
||||||
|
URLCONST.APP_DIR_URL |
||||||
|
) |
||||||
|
} |
||||||
|
val updateContents = updateContent.split("/".toRegex()) |
||||||
|
val s = StringBuilder() |
||||||
|
updateContents.forEach { |
||||||
|
s.append(it) |
||||||
|
s.append("<br>") |
||||||
|
} |
||||||
|
Log.i("检查更新,最新版本", newestVersion.toString() + "") |
||||||
|
if (newestVersion > versionCode) { |
||||||
|
val setting = SysManager.getSetting() |
||||||
|
if (isManualCheck || setting.newestVersionCode < newestVersion || isForceUpdate) { |
||||||
|
setting.newestVersionCode = newestVersion |
||||||
|
SysManager.saveSetting(setting) |
||||||
|
App.getApplication().updateApp2( |
||||||
|
activity, downloadLink, newestVersion, s.toString(), isForceUpdate |
||||||
|
) |
||||||
|
} |
||||||
|
} else if (isManualCheck) { |
||||||
|
ToastUtils.showSuccess("已经是最新版本!") |
||||||
|
} |
||||||
|
} catch (e: Exception) { |
||||||
|
e.printStackTrace() |
||||||
|
Log.e("检查更新失败!", "" + e.localizedMessage) |
||||||
|
if (isManualCheck || NetworkUtils.isNetWorkAvailable()) { |
||||||
|
ToastUtils.showError("检查更新失败!") |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
@Throws(IOException::class) |
||||||
|
fun getBakUpdateInfo(): String { |
||||||
|
return OkHttpUtils.getHtml( |
||||||
|
"https://fyreader.coding.net/p/img/d/FYReader-Update/git/raw/master/" + |
||||||
|
(if (App.isDebug()) "debug" else "release") + |
||||||
|
"/content.txt" |
||||||
|
) |
||||||
|
} |
||||||
|
} |
Loading…
Reference in new issue