Android - 如何在 WebView 中访问本地存储值?
Posted
技术标签:
【中文标题】Android - 如何在 WebView 中访问本地存储值?【英文标题】:Android - How to access local storage values in WebView? 【发布时间】:2016-09-16 12:25:11 【问题描述】:是否可以从 WebView 访问本地存储数据?这是我需要从我的应用程序的 WebView 中读取的值的 Chrome 屏幕截图。我需要从我的应用中的“值”列中获取数据。
例如,我正在尝试在我的 WebView 中访问 google.com,然后从键“nullctx”中读取值“1”。
任何有关如何读取这些值的帮助将不胜感激。
【问题讨论】:
您的问题我不清楚:您是否尝试使用 javascript 从 Web 视图访问本地存储?或者您想从 Web 视图将某些内容保存到本地存储中,然后从 Java 代码中读取? 我只是想读取值,如果 javascript 是唯一的方法,那么这就是我需要知道的。有一个网页将值存储在本地存储中,我可以在使用 Chrome 的桌面上很好地看到它们。我只需要从 WebView 中读取我的应用程序中的这些值。 你可以读回你存储在那里的任何东西,否则这显然是一个主要的安全问题。如果您不熟悉这个概念,首先这里是如何使用本地存储:w3schools.com/html/html5_webstorage.asp 此外,您需要在您的网络视图上启用网络存储,然后才能存储任何内容:***.com/questions/5899087/… 我希望这会有所帮助,也许这个不是你要找的。span> 您可以查看 Stetho >> facebook.github.io/stetho 【参考方案1】:window.localStorage
返回本地存储中的所有值。
您可以通过 `console.log(window.localStorage); 将它们全部打印到控制台;
您可以使用Console APIs in WebView 从控制台获取内容
WebView myWebView = (WebView) findViewById(R.id.webview);
myWebView.setWebChromeClient(new WebChromeClient()
public void onConsoleMessage(String message, int lineNumber, String sourceID)
Log.d("MyApplication", message + " -- From line "
+ lineNumber + " of "
+ sourceID);
);
如果您愿意,可以尝试使用以下 HTML `
<html>
<body>
value read from localstorage:<input type="text" id="test"><br>
value read from localstorage:<input type="text" id="test2"><p>
Open Console to read all values
<script>
window.localStorage.setItem("name", "Peter");
window.localStorage.setItem("name2", "Tom");
window.localStorage.setItem("name3", "Steve");
window.localStorage.setItem("name4", "Ian");
test.value=window.localStorage["name"];
test2.value=window.localStorage["name3"];
console.log(window.localStorage);
</script>
</body>
</html>
但这是针对存储在您的页面中的内容。您不能直接从不同域的 iFrame 中的其他页面读取信息。但是,如果您拥有所有这些页面,则可以使用来自 Cross-Domain LocalStorage 的信息。
【讨论】:
很遗憾,我无法访问该网页。例如,我要做的是在我的 WebView 中访问 google.com,然后从本地存储中,从键“nullctx”中读取值“1”(上面截图中的示例)。 如果 google.com 是在 webview 中打开的主页并且它没有在 iframe 中打开,您可以通过window.localStorage["nullctx"]
阅读它。您可以按照***.com/questions/21552912/… 在google.com 中为console.log 注入代码如果您可以在Chrome 检查器中获取该值,则可以在webview 中获取它。您可以通过打开 google.com 在 Google Chrome 控制台中尝试 window.localStorage
非常聪明,我喜欢 :)以上是关于Android - 如何在 WebView 中访问本地存储值?的主要内容,如果未能解决你的问题,请参考以下文章