首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Android如何将值写入HTML5本地存储?

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

Stack Overflow用户
提问于 2017-05-19 01:21:51
回答 3查看 9.8K关注 0票数 14

我有一个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本地存储由安卓

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-06-26 14:29:15

像字符串stackoverflow post一样传递变量

代码语言:javascript
运行
复制
   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

初始化部分

代码语言:javascript
运行
复制
 JavaScriptInterface jsInterface = new JavaScriptInterface(this);
 webView.getSettings().setJavaScriptEnabled(true);
 webView.addJavascriptInterface(jsInterface, "JSInterface");

JavaScriptInterface

代码语言:javascript
运行
复制
  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部分

代码语言:javascript
运行
复制
<script>
  function ready() {
        var data = window.JSInterface.getData("give me data");
        localStorage.put("give me data", data)
  };

  document.addEventListener("DOMContentLoaded", ready);
</script>
票数 22
EN

Stack Overflow用户

发布于 2017-06-26 14:35:40

Android webview如何写入HTML5本地存储?

代码语言:javascript
运行
复制
   localStorage.setItem("data", value);

注意:使用本地存储,web应用程序可以将数据本地存储在用户的浏览器中。HTML本地存储;比cookies更好。

尝试使用addJavaScriptInterface()绑定你的android类和网页。

票数 2
EN

Stack Overflow用户

发布于 2017-05-19 20:03:32

您可以通过javascript的位置散列属性来执行此操作。

Android代码可能如下所示

代码语言:javascript
运行
复制
WebView myWebView = (WebView) findViewById(R.id.myWebView);  
myWebView.loadUrl("http://www.example.com/#any_value");
myWebView.setWebViewClient(new MyWebViewClient());

Javascript代码看起来像这样

代码语言:javascript
运行
复制
var x = location.hash; //this will access the hash value you pass in url
localStorage.setItem("save_my_value", x);
票数 -3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44054224

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档