HarmonyOS 鸿蒙Next中读取加密tf卡并对接现有网页

HarmonyOS 鸿蒙Next中读取加密tf卡并对接现有网页 我现在有一个项目,提供了一张专用加密tf卡,有专门的驱动.so用来读取标识和加解密。

现在需要对接一个已有的网页,目前是想到了两个方案:

  • 一个是原生next应用调浏览器,后续操作都在浏览器中进行。
    • 但怎么安全传递和保存这个设备标识?
  • 还有一个是准备原生应用里用webview显示网页,但不太确定会不会遇到什么限制。
    • 现有的网页要尽可能不改动,网页可能有一些复杂的显示组件
    • 这个标识是存原生应用里还是怎么存存在哪里比较好?

各位请问有建议吗?

4 回复

1.原生 App 内嵌 WebView 显示网页。原生和 WebView 建立 JS Bridge(JavaScriptInterface / HarmonyOS JS Proxy / iOS WKScriptMessageHandler)。网页内需要标识时,通过 JS 调用原生接口获取。

cke_713.png

try {
        this.controller.runJavaScript(
          'test()',
          (error, result) => {
            if (error) {
              console.error(`run JavaScript error, ErrorCode: ${(error as BusinessError).code},  Message: ${(error as BusinessError).message}`);
              return;
            }
            if (result) {
              this.webResult = result;
              console.info(`The test() return value is: ${result}`);
            }
          });
        if (e) {
          console.info('url: ', e.url);
        }
      } catch (error) {
        console.error(`ErrorCode: ${(error as BusinessError).code},  Message: ${(error as BusinessError).message}`);
      }

参考文档:Class (WebviewController)-@ohos.web.webview (Webview)-ArkTS API-ArkWeb(方舟Web)-应用框架 - 华为HarmonyOS开发者

更多关于HarmonyOS 鸿蒙Next中读取加密tf卡并对接现有网页的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


楼主的第一个方案原生应用调浏览器的优势是无需处理WebView兼容性问题,适合复杂网页组件展示。但是跨应用通信存在安全隐患,需通过加密通道传递设备标识。适合网页独立运行且后续功能不依赖原生能力。WebView通过JavaScript桥接获取标识时,采用AES-CBC模式加密传输,加密密钥动态生成,通过cryptoFramework实现。

第二个方案原生应用内嵌WebView的优势是可通过JSBridage实现安全通信,设备标识完全由原生层控制。但是需处理WebView与复杂组件兼容性。更适合深度整合原生能力与网页功能。可以使用鸿蒙KeyStore硬件级保护存储加密后的设备标识,加密后的标识可存于应用沙箱internal://app/路径。

楼主可参考这两个方案的对比选择更加适合你的方案。

在HarmonyOS Next中,通过DataShareExtensionAbility机制访问加密TF卡。使用安全存储API解密数据,通过ArkTS调用相关接口读取内容。对接网页时,采用前端JavaScript与Native API交互,通过HTTP协议传输解密后的数据。需确保权限声明和加密模块正确配置。

针对你的需求,建议采用原生应用内嵌WebView的方案,理由如下:

  1. 安全传递设备标识:通过WebView的JavaScript接口,原生层可将加密后的标识注入到网页环境。使用HarmonyOS的安全加密模块(如@ohos.security.crypto)对标识进行加密后再传递,避免明文暴露。

  2. 数据存储方案:标识应存储在原生应用的加密沙盒中(如使用@ohos.data.preferences或@ohos.security.crypto框架加密存储),仅在需要时通过安全通道向WebView提供。避免持久化在网页端,降低泄露风险。

  3. 兼容性处理:HarmonyOS Next的WebView基于系统内核,对现代Web标准支持良好。若网页含复杂组件(如WebGL、WebAssembly),需测试渲染性能,但通常无硬性限制。可通过调整WebView硬件加速参数优化。

  4. 最小化网页改动:通过拦截WebView请求(onInterceptRequest)或注入JS桥接代码,实现原生与网页的通信。网页侧仅需增加少量对接逻辑(如接收加密标识的JS方法),无需重构现有功能。

注意事项:

  • 需在config.json声明网络权限(ohos.permission.INTERNET)和存储权限(若需读写TF卡)。
  • 加密驱动.so需通过NDK集成,确保与HarmonyOS Next的ABI兼容。
  • 避免通过URL参数传递敏感数据,优先使用JS接口的本地通信。
回到顶部