fix:内置浏览器未启用cookie和js
This commit is contained in:
@@ -17,6 +17,7 @@ import io.legado.app.R
|
|||||||
import io.legado.app.base.VMBaseActivity
|
import io.legado.app.base.VMBaseActivity
|
||||||
import io.legado.app.databinding.ActivityWebViewBinding
|
import io.legado.app.databinding.ActivityWebViewBinding
|
||||||
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.lib.dialogs.SelectItem
|
import io.legado.app.lib.dialogs.SelectItem
|
||||||
import io.legado.app.model.Download
|
import io.legado.app.model.Download
|
||||||
import io.legado.app.ui.association.OnLineImportActivity
|
import io.legado.app.ui.association.OnLineImportActivity
|
||||||
@@ -41,9 +42,9 @@ class WebViewActivity : VMBaseActivity<ActivityWebViewBinding, WebViewModel>() {
|
|||||||
|
|
||||||
override fun onActivityCreated(savedInstanceState: Bundle?) {
|
override fun onActivityCreated(savedInstanceState: Bundle?) {
|
||||||
binding.titleBar.title = intent.getStringExtra("title") ?: getString(R.string.loading)
|
binding.titleBar.title = intent.getStringExtra("title") ?: getString(R.string.loading)
|
||||||
initWebView()
|
|
||||||
viewModel.initData(intent) {
|
viewModel.initData(intent) {
|
||||||
val url = viewModel.baseUrl
|
val url = viewModel.baseUrl
|
||||||
|
initWebView(url)
|
||||||
val html = viewModel.html
|
val html = viewModel.html
|
||||||
if (html.isNullOrEmpty()) {
|
if (html.isNullOrEmpty()) {
|
||||||
binding.webView.loadUrl(url, viewModel.headerMap)
|
binding.webView.loadUrl(url, viewModel.headerMap)
|
||||||
@@ -67,7 +68,7 @@ class WebViewActivity : VMBaseActivity<ActivityWebViewBinding, WebViewModel>() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@SuppressLint("JavascriptInterface")
|
@SuppressLint("JavascriptInterface")
|
||||||
private fun initWebView() {
|
private fun initWebView(url: String) {
|
||||||
binding.webView.webChromeClient = CustomWebChromeClient()
|
binding.webView.webChromeClient = CustomWebChromeClient()
|
||||||
binding.webView.webViewClient = CustomWebViewClient()
|
binding.webView.webViewClient = CustomWebViewClient()
|
||||||
binding.webView.settings.apply {
|
binding.webView.settings.apply {
|
||||||
@@ -76,7 +77,10 @@ class WebViewActivity : VMBaseActivity<ActivityWebViewBinding, WebViewModel>() {
|
|||||||
allowContentAccess = true
|
allowContentAccess = true
|
||||||
useWideViewPort = true
|
useWideViewPort = true
|
||||||
loadWithOverviewMode = true
|
loadWithOverviewMode = true
|
||||||
|
javaScriptEnabled = true
|
||||||
}
|
}
|
||||||
|
val cookieManager = CookieManager.getInstance()
|
||||||
|
cookieManager.setCookie(url, CookieStore.getCookie(url))
|
||||||
binding.webView.addJavascriptInterface(this, "app")
|
binding.webView.addJavascriptInterface(this, "app")
|
||||||
upWebViewTheme()
|
upWebViewTheme()
|
||||||
binding.webView.setOnLongClickListener {
|
binding.webView.setOnLongClickListener {
|
||||||
@@ -207,6 +211,10 @@ class WebViewActivity : VMBaseActivity<ActivityWebViewBinding, WebViewModel>() {
|
|||||||
|
|
||||||
override fun onPageFinished(view: WebView?, url: String?) {
|
override fun onPageFinished(view: WebView?, url: String?) {
|
||||||
super.onPageFinished(view, url)
|
super.onPageFinished(view, url)
|
||||||
|
val cookieManager = CookieManager.getInstance()
|
||||||
|
url?.let {
|
||||||
|
CookieStore.setCookie(it, cookieManager.getCookie(it))
|
||||||
|
}
|
||||||
view?.title?.let { title ->
|
view?.title?.let { title ->
|
||||||
if (title != url && title != view.url && title.isNotBlank()) {
|
if (title != url && title != view.url && title.isNotBlank()) {
|
||||||
binding.titleBar.title = title
|
binding.titleBar.title = title
|
||||||
|
|||||||
Reference in New Issue
Block a user