&quot“ esturejavascript()返回“ null”作为WebView的LocalStorage值
(对不起,我的英语差)
我有一个网页,该网页设置了一个本地存储值,例如localstorage.setitem('name','myname')
,我将此网页加载到WebView中,我想要要访问Android应用程序中的此本地存储值,因此我使用了以下代码,但它返回“ null”,它需要半天,但我无法修复它,我不是Android开发人员,所以请再向我解释一下。
package com.example.myWebViewApp
import android.os.Bundle
import android.os.Handler
import android.util.Log
import android.webkit.ValueCallback
import android.webkit.WebView
import android.webkit.WebViewClient
import androidx.appcompat.app.AppCompatActivity
import androidx.swiperefreshlayout.widget.SwipeRefreshLayout
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val myWebView: WebView = findViewById(R.id.webview)
val webSettings = myWebView.settings
webSettings.javaScriptEnabled = true
webSettings.javaScriptCanOpenWindowsAutomatically = true
webSettings.allowFileAccess = true
webSettings.allowContentAccess = true
webSettings.domStorageEnabled = true
webSettings.textZoom = 100
webSettings.allowFileAccess = true
myWebView.loadUrl("http://192.168.1.99:3333")
myWebView.webViewClient = object : WebViewClient() {
override fun onPageFinished(view: WebView, url: String) {
myWebView.evaluateJavascript(
"window.localStorage.getItem('name');",
ValueCallback<String?> {
n -> run { Log.d("nameTag", "$n") }
}
)
}
}
val refreshLayout = findViewById<SwipeRefreshLayout>(R.id.swipeRefresher)
refreshLayout.setOnRefreshListener {
refreshLayout.isRefreshing = true
Handler().postDelayed(Runnable {
refreshLayout.isRefreshing = false
myWebView.reload()
}, 2000)
}
}
}
(Sorry for my poor English)
I have a web page which set a local storage value like localStorage.setItem('name', 'myName')
, I load this web page inside a webView and I want to access to this local storage value inside the android app so I used below code but it returns "null", it takes half a day but i can't fix it, I'm not android developer so explain me a little more please.
package com.example.myWebViewApp
import android.os.Bundle
import android.os.Handler
import android.util.Log
import android.webkit.ValueCallback
import android.webkit.WebView
import android.webkit.WebViewClient
import androidx.appcompat.app.AppCompatActivity
import androidx.swiperefreshlayout.widget.SwipeRefreshLayout
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val myWebView: WebView = findViewById(R.id.webview)
val webSettings = myWebView.settings
webSettings.javaScriptEnabled = true
webSettings.javaScriptCanOpenWindowsAutomatically = true
webSettings.allowFileAccess = true
webSettings.allowContentAccess = true
webSettings.domStorageEnabled = true
webSettings.textZoom = 100
webSettings.allowFileAccess = true
myWebView.loadUrl("http://192.168.1.99:3333")
myWebView.webViewClient = object : WebViewClient() {
override fun onPageFinished(view: WebView, url: String) {
myWebView.evaluateJavascript(
"window.localStorage.getItem('name');",
ValueCallback<String?> {
n -> run { Log.d("nameTag", "$n") }
}
)
}
}
val refreshLayout = findViewById<SwipeRefreshLayout>(R.id.swipeRefresher)
refreshLayout.setOnRefreshListener {
refreshLayout.isRefreshing = true
Handler().postDelayed(Runnable {
refreshLayout.isRefreshing = false
myWebView.reload()
}, 2000)
}
}
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论