gpt4 book ai didi

javascript - 将数据保存到 LocalStorage,然后使用 android Java 检索它

转载 作者:行者123 更新时间:2023-12-01 16:25:53 32 4
gpt4 key购买 nike

我正在使用 WebView 在我的 android 应用程序中加载一个本地网页,我的 web 页面 有一个按钮(比如说“btnA” ).当用户单击 btnA 时,调用 javascript 函数,将 deviceID 保存在浏览器的 localstorage 中。

现在有两件事想问一下:

  1. 我在保存 deviceID 时显示了一个警告,并且该警告在应用程序中运行良好,但是保存后我如何在手机的浏览器中看到该 deviceID?我在手机中使用 Chrome,我尝试转到 Chrome > 设置 > 网站设置 > 存储,但没有任何内容。
  2. 当用户点击 btnA 时,我想每 5 分钟运行一次后台 service,它会触发 api,我需要传递设备 ID(存储在 localStorage 中) 作为 api 的 参数。我如何从我的 android 应用程序中的 localstorage 获取该 deviceID,以便我可以将其作为参数传递?

这就是我在应用程序中加载 webview 的方式:

webView = findViewById(R.id.webView);
webView.getSettings().setJavaScriptEnabled(true);
webView.getSettings().setDomStorageEnabled(true);
webView.setWebChromeClient(new WebChromeClient());
webView.loadUrl("file:///android_res/raw/index.html");

这是我的网页:

<!DOCTYPE html>
<html>

<head>
<meta content="text/html;charset=utf-8" http-equiv="Content-Type">
<meta content="utf-8" http-equiv="encoding">
</head>

<body>
<button type="submit" value="Click Me" onclick="saveToLocalStorage()">Click Me</button>
<script src="./app.js" type="text/javascript"></script>
</body>

</html>

这是我的app.js:

function saveToLocalStorage() {
var generatedString = randomString(9, '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ');
if(localStorage.getItem("deviceID") == null){
localStorage.setItem("deviceID", generatedString);
alert("DeviceID saved.")
}

}

function randomString(length, chars) {
var result = '';
for (var i = length; i > 0; --i) result += chars[Math.floor(Math.random() * chars.length)];
return result;
}

最佳答案

你可以创建一个 Javascript 接口(interface):

public class JavaScriptInterface {
Context mContext;

/** Instantiate the interface and set the context */
JavaScriptInterface(Context c) {
mContext = c;
}

@JavascriptInterface
public void deviceId(String deviceId) {
// Do whatever you want with the deviceId
}
}

并将其传递给 webview:

webView.addJavascriptInterface(new JavaScriptInterface(this), "injectedObject");

然后您可以将该 ID 发送到 native 应用:

<script type="text/javascript">
function sendDeviceId() {
injectedObject.deviceId(localStorage.getItem("deviceID"));
}
</script>

通过从网站内部调用 sendDeviceId(), native 应用程序应该接收存储的 deviceId。这可以在 saveToLocalStorage() 方法的末尾完成。

要检查本地存储,您可以在智能手机上用 chrome 浏览器打开网站,然后将其连接到计算机并从计算机访问 chrome://inspect/#devices。这应该会显示您打开了选项卡,并且那里有一个检查链接,这将打开网站检查器,您可以在其中检查应用程序选项卡中该网站的本地存储。

关于javascript - 将数据保存到 LocalStorage,然后使用 android Java 检索它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61638166/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com