uni-app 鸿蒙Next平台下uni.previewImage长按保存功能失效且longPressActions配置不生效

发布于 1周前 作者 vueper 来自 Uni-App

uni-app 鸿蒙Next平台下uni.previewImage长按保存功能失效且longPressActions配置不生效

信息类别 信息内容
产品分类 uniapp/App
PC开发环境 Windows
PC版本号 win10
HBuilderX 正式
HBuilderX版本号 4.29
手机系统 HarmonyOS NEXT
手机版本号 HarmonyOS NEXT Developer Beta2
手机厂商 华为
手机机型 DevEco 模拟器
页面类型 vue
vue版本 vue3
打包方式 离线
项目创建方式 HBuilderX

操作步骤:

  1. 尝试使用uni.previewImage预览一个图片并长按保存。
  2. 设置longPressActions。

预期结果:

  1. 步骤1能完成保存。
  2. 步骤2能实现自定义操作菜单。

实际结果:

均无法实现。

bug描述:

uni.previewImage,长按图片保存,并无错误提示,但相册没有图片。 同时,longPressActions配置也未生效。


更多关于uni-app 鸿蒙Next平台下uni.previewImage长按保存功能失效且longPressActions配置不生效的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html

8 回复

你好,这个保存图片的问题下个版本就会修复。原因是现在版本中保存到系统相册的接口不是最新的。
另外,长按菜单定制,暂时不支持。

更多关于uni-app 鸿蒙Next平台下uni.previewImage长按保存功能失效且longPressActions配置不生效的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


uni.saveImageToPhotosAlbum也是下个版本支持吗,目前保存提示{“errMsg”:“saveImageToPhotosAlbum:fail No Permission”};或者有没有不需要授权的代替方案,uts试过不太行

回复 x***@163.com: 是的,就是这个方法,当前版本有问题。

4.31-alpha 已修复这个问题

1.尝试使用uni.previewImage预览一个图片并长按保存 在HBuilderX.4.31.2024102414-alpha版本,IOS保存png图片提示保存失败

回复 6***@qq.com: 你好,我这里没有复现这个问题,你可以提供一下一个项目吗?

您好,请上传一个最小的可复现的 demo 至附件,我们会进行排查。构建最小可复现 demo 时,可以参考以下步骤: 定位问题:首先找到出现问题的代码,从这里开始,分析代码的上下文逻辑,提取出最简那段代码,可以使用二分法等方式。 调试代码:之后需要使用调试工具,例如console 或者断点,检查代码的执行过程是否可以正确命中代码段并复现问题。 添加必要的依赖:最后,如果你的代码依赖于外部库或者框架,确保你构建的最小的可复现 demo 包含必要的依赖,并且去掉没用的依赖。 完成之后参照下方上传到评论区。 上传方式:将 demo 压缩成 zip 之后在底部回复框中点击上传附件,并且需要在输入框中给出如何操作可以复现 bug。 感谢您的支持,这非常有助于我们复现与修复问题。

在uni-app鸿蒙Next平台下,如果遇到uni.previewImage长按保存功能失效且longPressActions配置不生效的问题,这通常是由于平台兼容性问题或者API实现差异导致的。虽然无法直接提供修改uni-app框架内部逻辑的建议,但我们可以尝试通过一些代码技巧或者替代方案来解决这个问题。

替代方案:自定义预览组件

由于uni.previewImage在鸿蒙平台上可能存在限制,我们可以考虑使用自定义的预览组件来实现图片预览和长按保存功能。以下是一个简单的示例,展示了如何使用Vue组件结合uni-app的API来实现这一功能:

<template>
  <view class="container">
    <image
      v-for="(img, index) in images"
      :key="index"
      :src="img"
      mode="aspectFill"
      @longpress="handleLongPress(img)"
      class="image"
    />
    <!-- 自定义预览组件(简化版) -->
    <view v-if="isPreviewVisible" class="preview-overlay">
      <image :src="previewImage" class="preview-image" mode="widthFix" />
      <button @click="saveImage">保存图片</button>
    </view>
  </view>
</template>

<script>
export default {
  data() {
    return {
      images: ['url1', 'url2', ...], // 图片列表
      isPreviewVisible: false,
      previewImage: '',
    };
  },
  methods: {
    handleLongPress(img) {
      this.previewImage = img;
      this.isPreviewVisible = true;
    },
    saveImage() {
      // 鸿蒙平台可能不支持直接保存图片到相册,这里提供思路,具体实现需根据平台API调整
      uni.saveImageToPhotosAlbum({
        filePath: this.previewImage, // 注意:这里可能需要是本地文件路径,而非网络URL
        success: () => {
          uni.showToast({ title: '保存成功' });
          this.isPreviewVisible = false;
        },
        fail: () => {
          uni.showToast({ title: '保存失败', icon: 'none' });
        },
      });
    },
  },
};
</script>

<style>
/* 样式省略,根据实际需求调整 */
</style>

注意事项:

  1. 图片路径:在saveImage方法中,filePath参数需要是本地文件路径。如果previewImage是网络URL,则需要先下载到本地。
  2. 平台差异:鸿蒙平台可能有一些特定的限制或要求,具体实现时需要根据平台的文档进行调整。
  3. 用户体验:自定义组件可以提供更灵活的用户交互体验,但也需要更多的开发工作。

通过上述方法,可以在一定程度上绕过uni.previewImage在鸿蒙平台上的限制,实现图片预览和长按保存功能。

回到顶部