【问题标题】:Android - How to access local storage values in WebView?Android - 如何在 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 此外,您需要在您的网络视图上启用网络存储,然后才能存储任何内容:stackoverflow.com/questions/5899087/… 我希望这会有所帮助,也许这个不是你要找的。​​span>
  • 您可以查看 Stetho >> facebook.github.io/stetho

标签: android android-webview


【解决方案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"] 阅读它。您可以按照stackoverflow.com/questions/21552912/… 在google.com 中为console.log 注入代码如果您可以在Chrome 检查器中获取该值,则可以在webview 中获取它。您可以通过打开 google.com 在 Google Chrome 控制台中尝试 window.localStorage
  • 非常聪明,我喜欢 :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-06-23
  • 2015-07-01
  • 1970-01-01
  • 2016-03-06
  • 1970-01-01
相关资源
最近更新 更多