私はいくつかのHTML5/JavaScriptコードを含むWebページを開くwebview Androidアプリケーションを持っています。アプリケーションのAndroid=側からブラウザ側です。AndroidからHTML5 localstorageに書き込み、WebページのJavaScript部分がlocalstorageから値を読み取ると思います。
どのようにAndroid webviewをHTML5ローカルストレージに書き込むことができますか?
または、Androidは、ロードするページのJavaScriptにいくつかの値を渡すことができますか?(ページ全体を再ロードする必要なしに)HTML5 localstorageに何かを書き込んでから、JavaScriptコードを言うHTML5 localstorageからそのことを読み取ります
json形式のデータをwebviewからhtmlページに渡す方法 とは異なります。 AndroidでHTML5 localstorageに書き込む方法が必要です
文字列のような変数を渡す 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 +"');");
}
}
});
2番目のバリアントは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>
どのようにAndroid webviewをHTML5ローカルストレージに書き込むことができますか?
localStorage.setItem("data", value);
注:ローカルストレージを使用すると、ウェブアプリケーションはユーザーのブラウザ内でローカルにデータを保存できます。 HTMLローカルストレージ;クッキーより良い。
addJavaScriptInterface()を試して、AndroidクラスとWebページをバインドします。