flutter插件image_gallery_saver保存图片提示权限错误

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

HarmonyOS
2024-09-10 12:05:44
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
Heiang

看一下这个权限ohos.permission.WRITE_IMAGEVIDEO是否能满足需求,参考文档:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/photoaccesshelper-useralbum-guidelines-V5#添加图片和视频到用户相册中

操作相册是需要权限的,需要申请acl,请参考使用ACL的签名配置指导完成ACL提权。参考链接;https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/ide-signing-0000001587684945-V5#section157591551175916

acl权限可能流程会长一点,如果只是想实现保存图片到相册的功能,安全控件可以实现对相册进行写的要求,可以参考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}`); 
  } 
} 
 
@Entry 
@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) 
  } 
}
分享
微博
QQ
微信
回复
2024-09-10 17:30:13
相关问题
Flutter如何调用本地插件
230浏览 • 1回复 待解决
flutter_sound 插件引用问题
201浏览 • 1回复 待解决
HarmonyOS Loading提示插件问题
333浏览 • 1回复 待解决
运行flutter doctor -v后显示错误代码
900浏览 • 1回复 待解决
HarmonyOS图片保存相册问题
286浏览 • 1回复 待解决
最新hdc shell 提示权限不足
1631浏览 • 1回复 待解决
PixelMap怎么保存图片文件
263浏览 • 1回复 待解决
Image怎么替换svg图片
8172浏览 • 1回复 待解决
使用SaveButton保存图片的方式
442浏览 • 1回复 待解决
读取本地json 文件提示权限拒绝
3063浏览 • 1回复 待解决
HarmonyOS 相册保存图片设置title报错
243浏览 • 1回复 待解决
HarmonyOS 保存网络图片,图库更新
126浏览 • 1回复 待解决
Image组件是否支持.9图片
176浏览 • 1回复 待解决
如何实现小说插件、直播插件下发
1828浏览 • 1回复 待解决