HarmonyOS 鸿蒙Next 在某些场景展示二维码并允许用户保存至本地

发布于 1周前 作者 sinazl 来自 鸿蒙OS

HarmonyOS 鸿蒙Next 在某些场景展示二维码并允许用户保存至本地

在某些场景会展示二维码并允许用户保存二维码到本地(如联系客服,联系好友,个人名片),二维码通常都是服务器上保存的图片

2 回复
使用http模块下的request方法下载图片,并在该方法的回调函数中保存到相册

先申请以下权限:

ohos.permission.INTERNET

ohos.permission.WRITE_IMAGEVIDEO(克隆类和云盘类应用可申请,其他类型应用使用saveButton)

保存网络图片代码如下:

深色代码主题
复制
import { http } from '@kit.NetworkKit'

import { BusinessError } from ‘@kit.BasicServicesKit’;

import ResponseCode from ‘@ohos.net.http’;

import { photoAccessHelper } from ‘@kit.MediaLibraryKit’;

import fs from ‘@ohos.file.fs’;

@Entry

@Component

struct Index {

  loadImageWithUrl(url: string) {

    // 使用request下载图片并在回调函数中保存图片到相册

    http.createHttp().request(url,

      {

        method:http.RequestMethod.GET,

        connectTimeout:60000,

        readTimeout:60000

      },

    async (error: BusinessError, data: http.HttpResponse) => {

      if (error) {

        console.error(http reqeust failed with. Code: <span class="hljs-subst">${error.code}</span>, message: <span class="hljs-subst">${error.message}</span>);

      } else {

        if (ResponseCode.ResponseCode.OK === data.responseCode) {

          let imageBuffer: ArrayBuffer = data.result as ArrayBuffer;

          try {

            // 获取相册路径

            const context = getContext(this);

            let helper = photoAccessHelper.getPhotoAccessHelper(context);

            let uri = await helper.createAsset(photoAccessHelper.PhotoType.IMAGE, ‘jpg’)

            let file = await fs.open(uri, fs.OpenMode.READ_WRITE | fs.OpenMode.CREATE)

            // 写入文件

            await fs.write(file.fd, imageBuffer);

            // 关闭文件

            await fs.close(file.fd);

          } catch (error) {

            console.error("error is "+ JSON.stringify(error))

          }

        } else {

          console.error(“error occurred when image downloaded!”)

        }

      }

    })

  }

}

更多关于HarmonyOS 鸿蒙Next 在某些场景展示二维码并允许用户保存至本地的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS鸿蒙Next系统中,若需要在某些场景展示二维码并允许用户保存至本地,可以通过以下方式实现:

  1. 二维码生成

    • 使用系统提供的API或第三方库生成二维码图像。HarmonyOS提供了丰富的图像处理API,可以方便地生成二维码。
  2. UI展示

    • 利用ArkUI(基于TS/JS的UI框架)或ETS(基于Dart的声明式UI框架)构建UI界面,将生成的二维码图像展示在界面上。
  3. 保存至本地

    • 监听用户点击保存按钮的事件,触发保存逻辑。
    • 调用文件系统的API,将二维码图像保存到指定的本地路径。HarmonyOS提供了统一的文件访问接口,支持对本地存储的读写操作。
  4. 权限管理

    • 确保应用在manifest文件中声明了必要的权限,如读写存储权限,以便能够保存文件到本地。

示例代码(伪代码):

// 假设二维码图像已生成并存储在qrCodeImage变量中
ui.image({
  src: qrCodeImage,
  onClick: () => {
    saveImageToLocal(qrCodeImage, "path/to/save/qr_code.png");
  }
});

function saveImageToLocal(image, path) {
  // 调用文件系统的API保存图像到指定路径
  fileSystem.saveImage(image, path);
}

如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

回到顶部