Javascript Android如何将值写入HTML5本地存储?

Javascript Android如何将值写入HTML5本地存储?,javascript,android,html,android-webview,local-storage,Javascript,Android,Html,Android Webview,Local Storage,我有一个webview android应用程序,它打开一个包含一些HTML5/JavaScript代码的网页。我想将一些值从应用程序的android端传递到浏览器端。所以我想从Android写HTML5 localstorage,然后网页的Javascript部分从localstorage读取值 Android webview如何写入HTML5本地存储 或者android是否有办法将一些值传递给它加载的页面的javascript?(无需重新加载整个页面)比方说在HTML5LocalStorage

我有一个webview android应用程序,它打开一个包含一些HTML5/JavaScript代码的网页。我想将一些值从应用程序的android端传递到浏览器端。所以我想从Android写HTML5 localstorage,然后网页的Javascript部分从localstorage读取值


Android webview如何写入HTML5本地存储

或者android是否有办法将一些值传递给它加载的页面的javascript?(无需重新加载整个页面)比方说在HTML5LocalStorage上写入内容,然后javascript代码从HTML5LocalStorage读取该内容


它不同于。我需要一种通过android写入HTML5 localstorage的方法,你可以通过javascript的Location Hash属性来实现

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

像字符串一样传递变量:

第二种变体是使用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;
           }
        }
    }
初始段

 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>

函数就绪(){
var data=window.JSInterface.getData(“给我数据”);
localStorage.put(“给我数据”,data)
};
文件。addEventListener(“DOMContentLoaded”,就绪);

Android webview如何写入HTML5本地存储

   localStorage.setItem("data", value);
注意:使用本地存储,web应用程序可以在用户浏览器中本地存储数据。HTML本地存储;比饼干更好。

尝试addJavaScriptInterface()绑定android类和网页。

可能重复为什么需要将数据传递到Web视图?是否尝试使用
setDomStorageEnabled
?它不起作用!我希望android能传输一些数据,比如一些字符串,我在html页面上写的js代码,而不是其他方式。我不想每次通过一个新页面时都重新加载整个页面value@WaterfrVilla这两种变体loadUrl和hash以及类似javascript:的url都不会重新加载页面谢谢您的回答。帮助了我很多。如果网站是angular(typescript),如何获得
JSInterface
?我得到以下异常java.lang.RuntimeException:Stub!在android.content.Context.(Context.java:4)在android.content.ContextWrapper.(ContextWrapper.java:5)在android.view.ContextThemeWrapper.(ContextThemeWrapper.java:5)在android.app.Activity.(Activity.java:6)在main.java.tools.MyWebView.(MyWebView.java:8)@AndréLuizReis-你能分享一下代码片段吗。当前正在为appium传递本地存储值test@AlexNikulin hellooo,你能帮我做类似的事情吗