HarmonyOS鸿蒙Next中PhotoViewPicker提示13900002错误

HarmonyOS鸿蒙Next中PhotoViewPicker提示13900002错误 选择的文件uri为file:///storage/emulated/0/Pictures/Screenshots/Screenshot%2020250415_180411jpg,这个路径格式是否有问题?

build() {
    NavDestination() {
        Column() {
          Button('选择文件')
            .onClick(() => this.onSelect())
        }
    }
    .title('上传附件')
  }

  onSelect() {
    //1、创建图片、音频类型文件选择选项实例
    const photoSelectOptions = new photoAccessHelper.PhotoSelectOptions();
    //2、配置可选的媒体文件类型和媒体文件的最大数目
    photoSelectOptions.MIMEType = photoAccessHelper.PhotoViewMIMETypes.IMAGE_TYPE; // 过滤选择媒体文件类型为IMAGE
    const photoViewPicker = new photoAccessHelper.PhotoViewPicker();
    photoViewPicker
      .select(photoSelectOptions)
      .then((photoSelectResult: photoAccessHelper.PhotoSelectResult) => {
        this.selectUris = photoSelectResult.photoUris;
        promptAction.showMessageDialog({ message: '1、photoViewPicker成功选择的图片:' + JSON.stringify(this.selectUris) })
        this.onOpen(); //打开文件
      })
      .catch((err: BusinessError) => {
        promptAction.showMessageDialog({ message: '2、photoViewPicker选择图片失败:' + err.code + ':' + err.message });
      })
  }

  onOpen() {
    const uri = this.selectUris[0];
    promptAction.showMessageDialog({ message: '3、要打开的文件uri:' + uri });
    try {
      let file = fileIo.openSync(uri, fileIo.OpenMode.READ_ONLY);
      promptAction.showMessageDialog({ message: '4、文件 fd:' + file.fd })
      fileIo.closeSync(file); //关闭fd
    } catch (e) {
      promptAction.showMessageDialog({ message: '5、' + JSON.stringify(e) + ' : ' + uri })
    } 
  }

更多关于HarmonyOS鸿蒙Next中PhotoViewPicker提示13900002错误的实战教程也可以访问 https://www.itying.com/category-93-b0.html

6 回复

您好,在模拟器中运行您上述代码,并未出现您上述问题,功能是正常的。但是选择相册图片之后,返回的uri为:file://media/Photo/5/IMG_1744854249_004/screenshot_20250417_094228.jpg,和您返回结果不一样。想确认下您Deveco studio版本已经模拟器版本是多少?

我这边测试,Deveco studio版本:5.0.4.310、模拟器版本:HarmonyOS 5.0.0(12)

测试代码:

import { photoAccessHelper } from '@kit.MediaLibraryKit';
import { promptAction } from '@kit.ArkUI';
import { fileIo } from '@kit.CoreFileKit';
import { BusinessError } from '@kit.BasicServicesKit';

@Entry
@Component
struct Index {
  @State message: string = 'Hello World';
  @State selectUris: Array<string> = [];

  build() {
    NavDestination() {
      Column() {
        Button('选择文件')
          .onClick(() => this.onSelect())
      }
    }
    .title('上传附件')
  }

  onSelect() {
    //1、创建图片、音频类型文件选择选项实例
    const photoSelectOptions = new photoAccessHelper.PhotoSelectOptions();
    //2、配置可选的媒体文件类型和媒体文件的最大数目
    photoSelectOptions.MIMEType = photoAccessHelper.PhotoViewMIMETypes.IMAGE_TYPE; // 过滤选择媒体文件类型为IMAGE
    const photoViewPicker = new photoAccessHelper.PhotoViewPicker();
    photoViewPicker
      .select(photoSelectOptions)
      .then((photoSelectResult: photoAccessHelper.PhotoSelectResult) => {
        this.selectUris = photoSelectResult.photoUris;
        promptAction.showDialog({ message: '1、photoViewPicker成功选择的图片:' + JSON.stringify(this.selectUris) })
        this.onOpen(); //打开文件
      })
      .catch((err: BusinessError) => {
        promptAction.showDialog({ message: '2、photoViewPicker选择图片失败:' + err.code + ':' + err.message });
      })
  }

  onOpen() {
    const uri = this.selectUris[0];
    promptAction.showDialog({ message: '3、要打开的文件uri:' + uri });
    try {
      let file = fileIo.openSync(uri, fileIo.OpenMode.READ_ONLY);
      promptAction.showDialog({ message: '4、文件 fd:' + file.fd })
      fileIo.closeSync(file); //关闭fd
    } catch (e) {
      promptAction.showDialog({ message: '5、' + JSON.stringify(e) + ' : ' + uri })
    }
  }
}

更多关于HarmonyOS鸿蒙Next中PhotoViewPicker提示13900002错误的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


我用的DevEco Studio 5.0.4 Release,api:5.0.4(16),手机是HarmonyOs 4.2.0

但是我用的是ArkUI-X跨平台,用真机调试,这个问题一直没解决,不知道是不是跨平台的问题,

代码没有问题,我拿你的代码跑走的是弹窗4

有要学HarmonyOS AI的同学吗,联系我:https://www.itying.com/goods-1206.html

13900002 没有这个文件或目录

错误信息

No such file or directory

可能原因

文件或目录不存在。

处理步骤

确认文件路径是否存在。详情文档https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V13/errorcode-filemanagement-V13#section13900002-没有这个文件或目录

在HarmonyOS鸿蒙Next中,PhotoViewPicker提示13900002错误通常与权限或资源访问问题有关。建议按照以下步骤排查:

  1. 检查权限:确保应用已获取必要的权限,如ohos.permission.READ_MEDIAohos.permission.WRITE_MEDIA,并在config.json中正确声明。

  2. 资源路径:确认访问的图片路径正确,且资源存在。

  3. API调用:检查PhotoViewPicker的API调用是否符合规范,确保参数传递正确。

  4. 日志分析:通过DevEco Studio查看详细日志,定位具体问题。

如果问题仍存在,建议参考官方文档或社区支持获取进一步帮助。

回到顶部