优化
This commit is contained in:
@@ -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)
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user