From 3213822786c435f5a7327708c707f937baf9494d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=BA=90=E6=96=87=E9=9B=A8?= <41315874+fumiama@users.noreply.github.com> Date: Thu, 8 Dec 2022 17:53:23 +0800 Subject: [PATCH] fix #17 #18 --- app/build.gradle | 4 +- .../template/http/AutoDownloadHandler.kt | 12 +++--- .../top/fumiama/copymanga/tools/api/CMApi.kt | 43 +++++++++++-------- .../copymanga/tools/http/DownloadTools.kt | 18 +++++--- .../copymanga/ui/settings/SettingsFragment.kt | 5 --- .../copymanga/ui/vm/ViewMangaActivity.kt | 5 ++- app/src/main/res/values/strings.xml | 1 + 7 files changed, 52 insertions(+), 36 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index d1999c8..59da58b 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -9,8 +9,8 @@ android { applicationId 'top.fumiama.copymanga' minSdkVersion 23 targetSdkVersion 33 - versionCode 26 - versionName '2.0.beta14' + versionCode 27 + versionName '2.0.beta15' resConfigs 'zh', 'zh-rCN' testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" diff --git a/app/src/main/java/top/fumiama/copymanga/template/http/AutoDownloadHandler.kt b/app/src/main/java/top/fumiama/copymanga/template/http/AutoDownloadHandler.kt index 78d2ed3..66250dd 100644 --- a/app/src/main/java/top/fumiama/copymanga/template/http/AutoDownloadHandler.kt +++ b/app/src/main/java/top/fumiama/copymanga/template/http/AutoDownloadHandler.kt @@ -41,13 +41,15 @@ open class AutoDownloadHandler(private val url: String, private val jsonClass: C timeThread?.start() } private fun dlThread() { - DownloadTools.getHttpContent(url, - mainWeakReference?.get()?.getString(R.string.referUrl)!!, - mainWeakReference?.get()?.getString(R.string.pc_ua)!! - )?.let { + DownloadTools.getHttpContent(url, null, mainWeakReference?.get()?.getString(R.string.pc_ua)!!)?.let { if(exit) return val fi = it.inputStream() - val pass = setGsonItem(Gson().fromJson(fi.reader(), jsonClass)) + var pass = true + try { + pass = setGsonItem(Gson().fromJson(fi.reader(), jsonClass)) + } catch (e: Exception) { + e.printStackTrace() + } fi.close() if(!pass) { dlThread() diff --git a/app/src/main/java/top/fumiama/copymanga/tools/api/CMApi.kt b/app/src/main/java/top/fumiama/copymanga/tools/api/CMApi.kt index 5058fbf..74973a4 100644 --- a/app/src/main/java/top/fumiama/copymanga/tools/api/CMApi.kt +++ b/app/src/main/java/top/fumiama/copymanga/tools/api/CMApi.kt @@ -1,26 +1,31 @@ package top.fumiama.copymanga.tools.api +import android.content.Context import android.util.Base64 +import androidx.preference.PreferenceManager import com.bumptech.glide.load.model.LazyHeaders import top.fumiama.dmzj.copymanga.R import top.fumiama.copymanga.MainActivity import top.fumiama.copymanga.tools.http.DownloadTools -import top.fumiama.copymanga.ui.settings.SettingsFragment.Companion.settingsPref import java.io.File import java.net.URLEncoder object CMApi { var myGlideHeaders: LazyHeaders? = null get() { - if(field === null) - field = LazyHeaders.Builder() - .addHeader("referer", MainActivity.mainWeakReference?.get()?.getString(R.string.referUrl)!!) - .addHeader("User-Agent", MainActivity.mainWeakReference?.get()?.getString(R.string.pc_ua)!!) - .addHeader("source", "copyApp") - .addHeader("webp", "1") - .addHeader("region", if(settingsPref?.getBoolean("", false) == false) "1" else "0") - .addHeader("platform", "3") - .build() + MainActivity.mainWeakReference?.get()?.let { + PreferenceManager.getDefaultSharedPreferences(it).apply { + if(field === null) + field = LazyHeaders.Builder() + .addHeader("referer", MainActivity.mainWeakReference?.get()?.getString(R.string.referUrl)!!) + .addHeader("User-Agent", MainActivity.mainWeakReference?.get()?.getString(R.string.pc_ua)!!) + .addHeader("source", "copyApp") + .addHeader("webp", "1") + .addHeader("region", if(!getBoolean("settings_cat_net", false)) "1" else "0") + .addHeader("platform", "3") + .build() + } + } return field } fun getZipFile(exDir: File?, manga: String, caption: CharSequence, name: CharSequence) = File(exDir, "$manga/$caption/$name.zip") @@ -28,13 +33,17 @@ object CMApi { fun getApiUrl(id: Int, arg1: String?, arg2: String?, arg3: Int? = 0) = MainActivity.mainWeakReference?.get()?.getString(id)?.let { String.format(it, arg1, arg2, arg3) } fun getLoginConnection(username: String, pwd: String, salt: Int) = MainActivity.mainWeakReference?.get()?.getString(R.string.loginApiUrl)?.let { DownloadTools.getConnection(it, "POST")?.apply { - doOutput = true - setRequestProperty("content-type", "application/x-www-form-urlencoded;charset=utf-8") - setRequestProperty("platform", "3") - setRequestProperty("accept", "application/json") - val r = if(settingsPref?.getBoolean("", false) == false) "1" else "0" - val pwdb64 = Base64.encode("$pwd-$salt".toByteArray(), Base64.DEFAULT).decodeToString() - outputStream.write("username=${URLEncoder.encode(username)}&password=$pwdb64&salt=$salt&platform=3&authorization=Token+&version=1.4.4&source=copyApp®ion=$r&webp=1".toByteArray()) + MainActivity.mainWeakReference?.get()?.let { + PreferenceManager.getDefaultSharedPreferences(it).apply { + doOutput = true + setRequestProperty("content-type", "application/x-www-form-urlencoded;charset=utf-8") + setRequestProperty("platform", "3") + setRequestProperty("accept", "application/json") + val r = if(!getBoolean("settings_cat_net_sw_use_foreign", false)) "1" else "0" + val pwdb64 = Base64.encode("$pwd-$salt".toByteArray(), Base64.DEFAULT).decodeToString() + outputStream.write("username=${URLEncoder.encode(username)}&password=$pwdb64&salt=$salt&platform=3&authorization=Token+&version=1.4.4&source=copyApp®ion=$r&webp=1".toByteArray()) + } + } } } } diff --git a/app/src/main/java/top/fumiama/copymanga/tools/http/DownloadTools.kt b/app/src/main/java/top/fumiama/copymanga/tools/http/DownloadTools.kt index 0e687e8..6224c72 100644 --- a/app/src/main/java/top/fumiama/copymanga/tools/http/DownloadTools.kt +++ b/app/src/main/java/top/fumiama/copymanga/tools/http/DownloadTools.kt @@ -2,11 +2,10 @@ package top.fumiama.copymanga.tools.http import android.content.Context import android.util.Log +import androidx.preference.PreferenceManager import top.fumiama.copymanga.MainActivity import top.fumiama.copymanga.tools.ssl.AllTrustManager import top.fumiama.copymanga.tools.ssl.IgnoreHostNameVerifier -import top.fumiama.copymanga.ui.settings.SettingsFragment.Companion.settingsPref -import top.fumiama.dmzj.copymanga.R import java.net.HttpURLConnection import java.net.URL import java.net.URLEncoder @@ -40,10 +39,17 @@ object DownloadTools { refer?.let { setRequestProperty("referer", it) } setRequestProperty("source", "copyApp") setRequestProperty("webp", "1") - setRequestProperty("region", if(settingsPref?.getBoolean("", false) == false) "1" else "0") - MainActivity.mainWeakReference?.get()?.getPreferences(Context.MODE_PRIVATE)?.getString("token", "")?.let { - if(it != "") setRequestProperty("authorization", "Token $it") - else setRequestProperty("authorization", "Token") + MainActivity.mainWeakReference?.get()?.let { + PreferenceManager.getDefaultSharedPreferences(it).apply { + setRequestProperty("region", if(!getBoolean("settings_cat_net_sw_use_foreign", false)) "1" else "0") + } + it.getPreferences(Context.MODE_PRIVATE).apply { + setRequestProperty("version", getString("app_ver", "1.4.4")) + getString("token", "")?.let { + if(it != "") setRequestProperty("authorization", "Token $it") + else setRequestProperty("authorization", "Token") + } + } } setRequestProperty("host", url.substringAfter("://").substringBefore("/")) setRequestProperty("platform", "3") diff --git a/app/src/main/java/top/fumiama/copymanga/ui/settings/SettingsFragment.kt b/app/src/main/java/top/fumiama/copymanga/ui/settings/SettingsFragment.kt index b73cce1..a12f54f 100644 --- a/app/src/main/java/top/fumiama/copymanga/ui/settings/SettingsFragment.kt +++ b/app/src/main/java/top/fumiama/copymanga/ui/settings/SettingsFragment.kt @@ -9,10 +9,5 @@ import top.fumiama.dmzj.copymanga.R class SettingsFragment: PreferenceFragmentCompat() { override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) { setPreferencesFromResource(R.xml.pref_setting, rootKey) - if(settingsPref == null) settingsPref = context?.let { PreferenceManager.getDefaultSharedPreferences(it) } - } - - companion object { - var settingsPref: SharedPreferences? = SettingsFragment().context?.let {PreferenceManager.getDefaultSharedPreferences(it)} } } diff --git a/app/src/main/java/top/fumiama/copymanga/ui/vm/ViewMangaActivity.kt b/app/src/main/java/top/fumiama/copymanga/ui/vm/ViewMangaActivity.kt index c752b11..a47c95a 100644 --- a/app/src/main/java/top/fumiama/copymanga/ui/vm/ViewMangaActivity.kt +++ b/app/src/main/java/top/fumiama/copymanga/ui/vm/ViewMangaActivity.kt @@ -3,6 +3,7 @@ package top.fumiama.copymanga.ui.vm import android.animation.ObjectAnimator import android.annotation.SuppressLint import android.app.Service +import android.content.Context import android.graphics.Bitmap import android.graphics.BitmapFactory import android.media.AudioManager @@ -13,6 +14,7 @@ import android.view.* import android.widget.SeekBar import android.widget.Toast import androidx.core.content.edit +import androidx.preference.PreferenceManager import androidx.recyclerview.widget.RecyclerView import androidx.viewpager2.widget.ViewPager2 import com.bumptech.glide.Glide @@ -29,6 +31,7 @@ import kotlinx.android.synthetic.main.widget_infodrawer.* import kotlinx.android.synthetic.main.widget_titlebar.* import kotlinx.android.synthetic.main.widget_titlebar.view.* import kotlinx.android.synthetic.main.widget_viewmangainfo.* +import top.fumiama.copymanga.MainActivity import top.fumiama.dmzj.copymanga.R import top.fumiama.copymanga.template.general.TitleActivityTemplate import top.fumiama.copymanga.template.http.AutoDownloadThread @@ -41,7 +44,6 @@ import java.io.ByteArrayOutputStream import java.io.File import java.io.InputStream import java.lang.ref.WeakReference -import top.fumiama.copymanga.ui.settings.SettingsFragment.Companion.settingsPref import java.util.concurrent.FutureTask import java.util.zip.ZipFile @@ -89,6 +91,7 @@ class ViewMangaActivity : TitleActivityTemplate() { override fun onCreate(savedInstanceState: Bundle?) { setContentView(R.layout.activity_viewmanga) super.onCreate(savedInstanceState) + val settingsPref = MainActivity.mainWeakReference?.get()?.let { PreferenceManager.getDefaultSharedPreferences(it) } va = WeakReference(this) //dlZip2View = intent.getStringExtra("callFrom") == "Dl" || p["dlZip2View"] == "true" //zipFirst = intent.getStringExtra("callFrom") == "zipFirst" diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index d51a5c2..651e1fe 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -61,6 +61,7 @@ 无网络 Dart/2.16 (dart:io) + 1.4.4 更新时间 热度