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