This commit is contained in:
Horis
2025-01-17 17:37:02 +08:00
parent eec36218ea
commit 8f376fc234
3 changed files with 14 additions and 6 deletions
@@ -1,9 +1,11 @@
package io.legado.app.help.http package io.legado.app.help.http
import android.webkit.CookieManager
import io.legado.app.constant.AppLog import io.legado.app.constant.AppLog
import io.legado.app.data.appDb import io.legado.app.data.appDb
import io.legado.app.help.CacheManager import io.legado.app.help.CacheManager
import io.legado.app.utils.NetworkUtils import io.legado.app.utils.NetworkUtils
import io.legado.app.utils.splitNotBlank
import okhttp3.Cookie import okhttp3.Cookie
import okhttp3.Headers import okhttp3.Headers
import okhttp3.HttpUrl import okhttp3.HttpUrl
@@ -139,6 +141,14 @@ object CookieManager {
} }
} }
fun applyToWebView(url: String) {
val cookies = CookieStore.getCookie(url).splitNotBlank(";")
val cookieManager = CookieManager.getInstance()
cookies.forEach {
cookieManager.setCookie(url, it)
}
}
fun List<Cookie>.getString() = buildString { fun List<Cookie>.getString() = buildString {
this@getString.forEachIndexed { index, cookie -> this@getString.forEachIndexed { index, cookie ->
if (index > 0) append("; ") if (index > 0) append("; ")
@@ -47,6 +47,7 @@ import io.legado.app.utils.toggleNavigationBar
import io.legado.app.utils.viewbindingdelegate.viewBinding import io.legado.app.utils.viewbindingdelegate.viewBinding
import io.legado.app.utils.visible import io.legado.app.utils.visible
import java.net.URLDecoder import java.net.URLDecoder
import io.legado.app.help.http.CookieManager as AppCookieManager
class WebViewActivity : VMBaseActivity<ActivityWebViewBinding, WebViewModel>() { class WebViewActivity : VMBaseActivity<ActivityWebViewBinding, WebViewModel>() {
@@ -171,8 +172,7 @@ class WebViewActivity : VMBaseActivity<ActivityWebViewBinding, WebViewModel>() {
userAgentString = it userAgentString = it
} }
} }
val cookieManager = CookieManager.getInstance() AppCookieManager.applyToWebView(url)
cookieManager.setCookie(url, CookieStore.getCookie(url))
binding.webView.addJavascriptInterface(this, "app") binding.webView.addJavascriptInterface(this, "app")
binding.webView.setOnLongClickListener { binding.webView.setOnLongClickListener {
val hitTestResult = binding.webView.hitTestResult val hitTestResult = binding.webView.hitTestResult
@@ -10,7 +10,6 @@ import android.view.Menu
import android.view.MenuItem import android.view.MenuItem
import android.view.View import android.view.View
import android.view.WindowManager import android.view.WindowManager
import android.webkit.CookieManager
import android.webkit.JavascriptInterface import android.webkit.JavascriptInterface
import android.webkit.SslErrorHandler import android.webkit.SslErrorHandler
import android.webkit.URLUtil import android.webkit.URLUtil
@@ -35,7 +34,7 @@ import io.legado.app.constant.AppLog
import io.legado.app.data.entities.RssSource import io.legado.app.data.entities.RssSource
import io.legado.app.databinding.ActivityRssReadBinding import io.legado.app.databinding.ActivityRssReadBinding
import io.legado.app.help.config.AppConfig import io.legado.app.help.config.AppConfig
import io.legado.app.help.http.CookieStore import io.legado.app.help.http.CookieManager
import io.legado.app.lib.dialogs.SelectItem import io.legado.app.lib.dialogs.SelectItem
import io.legado.app.lib.dialogs.selector import io.legado.app.lib.dialogs.selector
import io.legado.app.lib.theme.accentColor import io.legado.app.lib.theme.accentColor
@@ -308,8 +307,7 @@ class ReadRssActivity : VMBaseActivity<ActivityRssReadBinding, ReadRssViewModel>
} }
viewModel.urlLiveData.observe(this) { viewModel.urlLiveData.observe(this) {
upJavaScriptEnable() upJavaScriptEnable()
val cookieManager = CookieManager.getInstance() CookieManager.applyToWebView(it.url)
cookieManager.setCookie(it.url, CookieStore.getCookie(it.url))
binding.webView.settings.userAgentString = it.getUserAgent() binding.webView.settings.userAgentString = it.getUserAgent()
binding.webView.loadUrl(it.url, it.headerMap) binding.webView.loadUrl(it.url, it.headerMap)
} }