【发布时间】:2020-05-06 14:45:49
【问题描述】:
我正在使用WebView 在我的android 应用程序中加载本地网页,而我的web page 有一个按钮(比如说“btnA”)。当用户点击btnA时,javascript函数被调用,将deviceID保存在浏览器的localstorage中。
现在我想问几件事:
- 我在保存 deviceID 时显示警报,并且该警报在应用程序中工作正常,但是保存后如何在手机浏览器中查看 deviceID?我在手机中使用 Chrome,我尝试转到 Chrome > 设置 > 站点设置 > 存储,但没有任何内容。
- 当用户点击 btnA 时,我想在每 5 分钟后运行一个后台
service,它会达到一个api,并且我需要将 deviceID(存储在 localStorage 中)作为 api 的parameter传递。如何在我的 android 应用程序中从localstorage获取该设备 ID,以便我可以将其作为参数传递?
这就是我在应用程序中加载 web 视图的方式:
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 android webview