我有一个webview安卓应用程序打开一个网页,其中包含一些HTML5/ JavaScript代码。我希望将一些值从应用程序的android端传递到浏览器端。所以我想从Android写入HTML5本地存储,然后网页的Javascript部分读取本地存储中的值。
Android webview如何写入HTML5本地存储?
或者,android有没有一种方法可以将一些值传递给它加载的页面的javascript?(不必重新加载整个页面)比方说,将某些内容写入HTML5本地存储,然后javascript代码从HTML5本地存储中读取该内容。
它不同于how to pass json formatted data from a webview to a html page。我需要一种方式写入到HTML5本地存储由安卓
发布于 2017-06-26 14:29:15
像字符串stackoverflow post一样传递变量
webView.getSettings().setJavaScriptEnabled(true);
webView.setWebViewClient(new WebViewClient() {
@Override
public void onPageFinished(WebView view, String url) {
String key = "hello";
String val = "world";
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.KITKAT) {
webView.evaluateJavascript("localStorage.setItem('"+ key +"','"+ val +"');", null);
} else {
webView.loadUrl("javascript:localStorage.setItem('"+ key +"','"+ val +"');");
}
}
});
第二个变体是使用JavaScriptInterface
初始化部分
JavaScriptInterface jsInterface = new JavaScriptInterface(this);
webView.getSettings().setJavaScriptEnabled(true);
webView.addJavascriptInterface(jsInterface, "JSInterface");
JavaScriptInterface
public class JavaScriptInterface {
private Activity activity;
public JavaScriptInterface(Activity activiy) {
this.activity = activiy;
}
public string getData(String someParameter){
//also you can return json data as string and at client side do JSON.parse
if (someParameter == "give me data" && this.activity.data) {
return this.activity.data;
}else{
return null;
}
}
}
Js部分
<script>
function ready() {
var data = window.JSInterface.getData("give me data");
localStorage.put("give me data", data)
};
document.addEventListener("DOMContentLoaded", ready);
</script>
发布于 2017-06-26 14:35:40
Android webview如何写入HTML5本地存储?
localStorage.setItem("data", value);
注意:使用本地存储,web应用程序可以将数据本地存储在用户的浏览器中。HTML本地存储;比cookies更好。
尝试使用addJavaScriptInterface()绑定你的android类和网页。
发布于 2017-05-19 20:03:32
您可以通过javascript的位置散列属性来执行此操作。
Android代码可能如下所示
WebView myWebView = (WebView) findViewById(R.id.myWebView);
myWebView.loadUrl("http://www.example.com/#any_value");
myWebView.setWebViewClient(new MyWebViewClient());
Javascript代码看起来像这样
var x = location.hash; //this will access the hash value you pass in url
localStorage.setItem("save_my_value", x);
https://stackoverflow.com/questions/44054224
复制相似问题