2017-05-18 13 views
8

私はいくつかのHTML5/JavaScriptコードを含むWebページを開くwebviewアンドロイドアプリケーションを持っています。私はアプリケーションのアンドロイド側からブラウザ側にいくつかの値を渡したいと思います。そこで私はAndroidからHTML5のローカルストレージに書き込むと考えていました。そして、WebページのJavascript部分はlocalstorageから値を読み込みます。AndroidはどのようにHTML5ローカルストレージに値を書き込むことができますか?

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

または、アンドロイドがロードするページのjavascriptにいくつかの値を渡すことができますか? (ページ全体をリロードする必要はありません)HTML5ローカルストレージに何かを書き込んでから、JavaScriptコードがHTML5ローカルストアからその内容を読み上げるとします。

how to pass json formatted data from a webview to a html pageとは異なります。私は..あなたはジャバスクリプトの場所ハッシュプロパティでそれを行うことができますアンドロイド

+0

[WebViewからHTMLページにJSON形式のデータを渡す方法](http://stackoverflow.com/questions/10114993/how-to-pass-json-formatted-data-from-a) -webview-to-a-html-page) – petey

+0

データをWebビューに渡す必要があるのはなぜですか? – joshuamabina

答えて

3

パス変数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

Initセクション

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> 
-1

によってHTML5のlocalStorageをへの書き込みの方法が必要です

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); 
+0

それは働いていない!私は、いくつかの文字列のようないくつかのデータを転送するwandを杖、私はそのHTMLページで書かれたjtコード –

+0

私は新しい値を渡すたびにページ全体をリロードしたくありません –

+0

@WaterfrVilla両方のバリエーションloadUrlハッシュとちょうどjavascriptのようなurl :,あなたのページをリロードしません –

3

方法のAndroidのWebViewがオンに書くことができますを使用することですHTML5ローカルストアに移動しますか?

localStorage.setItem("data", value); 

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

関連する問題