HarmonyOS 鸿蒙Next flutter插件image_gallery_saver保存图片提示权限错误

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

HarmonyOS 鸿蒙Next flutter插件image_gallery_saver保存图片提示权限错误 使用flutter插件image_gallery_saver保存图片的时候,报错提示ImageGallerySaverPlugin --> Permissions is false 想要保存图片到相册,需要申请哪个权限。我现在申请了ohos.permission.WRITE_MEDIA"这个权限。

2 回复

看一下这个权限ohos.permission.WRITE_IMAGEVIDEO是否能满足需求,参考文档:
https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/photoaccesshelper-useralbum-guidelines-0000001774120638#ZH-CN_TOPIC_0000001811318718__

参考demo如下:

import photoAccessHelper from '@ohos.file.photoAccessHelper';
import fs from '@ohos.file.fs';
import common from '@ohos.app.ability.common';
import promptAction from '@ohos.promptAction';
import { BusinessError } from '@ohos.base';

async function savePhotoToGallery(context: common.UIAbilityContext) {
  let helper = photoAccessHelper.getPhotoAccessHelper(context);
  try {
    // onClick触发后5秒内通过createAsset接口创建图片文件,5秒后createAsset权限收回。
    let uri = await helper.createAsset(photoAccessHelper.PhotoType.IMAGE, 'jpg');
    // 使用uri打开文件,可以持续写入内容,写入过程不受时间限制
    let file = await fs.open(uri, fs.OpenMode.READ_WRITE | fs.OpenMode.CREATE);
    context.resourceManager.getMediaContent($r('app.media.icon').id, 0)
      .then(async value => {
        let media = value.buffer;
        // 写到媒体库文件中
        await fs.write(file.fd, media);
        await fs.close(file.fd);
        promptAction.showToast({ message: '已保存至相册!' });
      });
  }
  catch (error) {
    const err: BusinessError = error as BusinessError;
    console.error(`Failed to save photo. Code is ${err.code}, message is ${err.message}`);
  }
}

@Component
struct SavePage {
  build() {
    Row() {
      Column({ space: 10 }) {
        Image($r('app.media.icon'))
          .height(400)
          .width('100%')
        SaveButton().onClick(async (event: ClickEvent, result: SaveButtonOnClickResult) => {
          if (result === SaveButtonOnClickResult.SUCCESS) {
            const context: common.UIAbilityContext = getContext(this) as common.UIAbilityContext;
            // 免去权限申请和权限请求等环节,获得临时授权,保存对应图片
            savePhotoToGallery(context);
          } else {
            promptAction.showToast({ message: '设置权限失败!' })
          }
        })
      }
      .width('100%')
    }
    .height('100%')
    .backgroundColor(0xF1F3F5)
  }
}

更多关于HarmonyOS 鸿蒙Next flutter插件image_gallery_saver保存图片提示权限错误的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


针对HarmonyOS鸿蒙系统中使用Flutter插件image_gallery_saver保存图片时提示权限错误的问题,可能的原因及解决方法如下:

  1. 检查权限配置:确保在config.json文件中已经正确配置了存储权限。对于HarmonyOS,通常需要配置ohos.permission.WRITE_MEDIAohos.permission.READ_MEDIA等权限。

  2. 动态申请权限:在运行时,应用需要动态申请存储权限,并处理用户的授权结果。可以在Flutter中使用permission_handler等插件来辅助实现权限的动态申请。

  3. 检查插件版本:确保image_gallery_saver插件的版本与HarmonyOS SDK兼容。有时候,插件的新版本会修复与特定操作系统版本的兼容性问题。

  4. 调试和日志:使用HarmonyOS的开发者工具进行调试,查看详细的错误日志,以确定是哪一步操作导致了权限错误。

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

回到顶部