本文介绍: 在日常开发我们会在应用种接入H5网页localStorage作为H5本地存储web storage特性的API之一,主要作用是将数据保存客户端中。获取到的值会在onReceive回调中返回如上图可以看到我们获取val的值时123456789,跟我们初始化设置的时候相同。以上就实现了WebView组件中启用H5 localStorage,以下是完整代码大家参考。第三步、通过写入key获取localStorage中的val值。第二步、写入localStorage值。

在日常开发中我们会在应用种接入H5网页localStorage作为H5本地存储web storage特性的API之一,主要作用是将数据保存客户端中。对于快速开发服务,通过WebView组件运行H5如何使用localstorage呢?下文以API7 JavaUI为例为大家做相关的讲解

实现步骤

第一步、配置WebView

首先我们需要配置WebView组件,这也是最重要的一步。代码如下:

webview = (WebView) findComponentById(ResourceTable.Id_webview);
webview.getWebConfig().setJavaScriptPermit(true);
webview.getWebConfig().setWebStoragePermit(true);

其中setJavaScriptPermit设置在WebView中启用JavaScript

setWebStoragePermit这一步很重要,用于开启H5 DOM存储,没有这个方法就不能在H5中启用localStorage

第二步、写入localStorage值

为了方便测试我这边使用的是本地html文件,在页面加载完成时通过js写入localStorage:

 webview.setWebAgent(new WebAgent(){
   @Override
   public void onPageLoaded(WebView view, String url) {
       super.onPageLoaded(view, url);
       webview.executeJs("window.localStorage.setItem('" + key + "','" + val + "');", new AsyncCallback<String>() {
           @Override
           public void onReceive(String value) {
               System.out.println(value);
           }
       });
   }

});
webview.load(URL_LOCAL);

这样我们就写入一个键值对,这个键值对我们在初始化的时候给他赋值

String key = "key1";
String val = "123456789";

第三步、通过写入key获取localStorage中的val值

String js = "window.localStorage.getItem('" + key + "');";
webview.executeJs(js, new AsyncCallback<String>() {
   @Override
   public void onReceive(String value) {
       System.out.println(value);
   }

});

我们可以需要的地方调用这个方法获取key对应的val的值,为了方便测试我通过一个按钮实现,以下时运行结果

cke_4079.png

获取到的值会在onReceive回调中返回如上图可以看到我们获取到val的值时123456789,跟我们初始化设置的时候相同

总结

以上就实现了WebView组件中启用H5 localStorage,以下是完整代码大家参考

package com.example.webstorage.slice;


import com.example.webstorage.ResourceTable;

import ohos.aafwk.ability.AbilitySlice;

import ohos.aafwk.content.Intent;

import ohos.agp.components.Component;

import ohos.agp.components.webengine.*;


public class MainAbilitySlice extends AbilitySlice {
   private static final String URL_LOCAL = "dataability://com.example.webstorage.DataAbility/resources/rawfile/test.html";
   WebView webview;
   String key = "key1";
   String val = "123456789";
   @Override
   public void onStart(Intent intent) {
       super.onStart(intent);
       super.setUIContent(ResourceTable.Layout_ability_main);
       webview = (WebView) findComponentById(ResourceTable.Id_webview);
       webview.getWebConfig().setJavaScriptPermit(true);
       webview.getWebConfig().setWebStoragePermit(true);

       webview.setWebAgent(new WebAgent(){
           @Override
           public void onPageLoaded(WebView view, String url) {
               super.onPageLoaded(view, url);
               webview.executeJs("window.localStorage.setItem('" + key + "','" + val + "');", new AsyncCallback<String>() {
                   @Override
                   public void onReceive(String value) {
                       System.out.println(value);
                   }
               });
           }
       });
       webview.load(URL_LOCAL);

       findComponentById(ResourceTable.Id_btn_get).setClickedListener(new Component.ClickedListener() {
           @Override
           public void onClick(Component component) {

               String js = "window.localStorage.getItem('" + key + "');";
               webview.executeJs(js, new AsyncCallback<String>() {
                   @Override
                   public void onReceive(String value) {
                       System.out.println(value);
                   }
               });

           }
       });
   }


   @Override
   public void onActive() {
       super.onActive();
   }

   @Override
   public void onForeground(Intent intent) {
       super.onForeground(intent);
   }

}

 欲了解更多更全技术文章,欢迎访问https://developer.huawei.com/consumer/cn/forum/?ha_source=zzh

原文地址:https://blog.csdn.net/weixin_44708240/article/details/130421353

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。

如若转载,请注明出处:http://www.7code.cn/show_8491.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注