web-dev-qa-db-ja.com

Android HTML5 localstorageに値を書き込むにはどうすればよいですか?

私はいくつかの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に書き込む方法が必要です

14
Waterfr Villa

文字列のような変数を渡す 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>
19
Alex Nikulin

どのようにAndroid webviewをHTML5ローカルストレージに書き込むことができますか?

   localStorage.setItem("data", value);

注:ローカルストレージを使用すると、ウェブアプリケーションはユーザーのブラウザ内でローカルにデータを保存できます。 HTMLローカルストレージ;クッキーより良い。
addJavaScriptInterface()を試して、AndroidクラスとWebページをバインドします。

2
paulcab