鸿蒙Next开发中如何选择公共目录进行访问

在鸿蒙Next开发中,如何正确选择公共目录进行文件访问?比如需要访问相册、下载目录等公共资源时,具体的API调用方法和权限配置是怎样的?能否提供示例代码说明不同场景下的最佳实践?

2 回复

鸿蒙Next选公共目录?记住口诀:
“先问权限,再挑地盘”
@ohos.file.fsgetOrCreateDir,比如DIR_DOCUMENTS存文件,DIR_DOWNLOAD放下载。
别乱进DIR_APPS(系统会瞪你)!
记得在module.json5里声明权限,否则系统会假装听不懂🌚
简单说:选目录像去朋友家——去客厅可以,闯卧室会被赶出来!

更多关于鸿蒙Next开发中如何选择公共目录进行访问的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在鸿蒙Next开发中,访问公共目录(如文档、下载、图片等)需使用媒体库管理接口,通过用户授权和PhotoAccessHelper选择目录。以下是关键步骤和示例代码:

步骤说明:

  1. 申请权限:在module.json5中配置ohos.permission.READ_IMAGEVIDEOohos.permission.WRITE_IMAGEVIDEO权限。
  2. 获取PhotoAccessHelper实例:通过系统能力调用媒体库接口。
  3. 获取公共目录:使用getAlbums方法指定目录类型(如文档、下载夹)。

示例代码(访问下载目录):

import photoAccessHelper from '@ohos.file.photoAccessHelper';

// 1. 获取PhotoAccessHelper实例
let phAccessHelper: photoAccessHelper.PhotoAccessHelper;
try {
  phAccessHelper = photoAccessHelper.getPhotoAccessHelper(context);
} catch (err) {
  console.error('获取PhotoAccessHelper失败: ' + JSON.stringify(err));
}

// 2. 定义目录类型(下载目录)
let albumType = photoAccessHelper.AlbumType.ALBUM_TYPE_DOWNLOAD;

// 3. 获取公共目录对象
try {
  let albums: photoAccessHelper.FetchResult<photoAccessHelper.Album> = await phAccessHelper.getAlbums(albumType);
  let album: photoAccessHelper.Album = await albums.getFirstObject();
  console.log('下载目录URI: ' + album.albumUri);
} catch (err) {
  console.error('获取目录失败: ' + JSON.stringify(err));
}

关键点:

  • 目录类型枚举:使用AlbumType选择目录,例如:
    • ALBUM_TYPE_DOWNLOAD(下载)
    • ALBUM_TYPE_DOCUMENT(文档)
    • ALBUM_TYPE_IMAGE(图片)
  • 用户授权:首次访问时会自动触发权限弹窗,需用户允许。
  • URI操作:获取目录URI后,可通过photoAccessHelper接口进行文件读写。

注意事项:

  • 仅支持系统预置公共目录,无法自定义路径。
  • 确保在UIAbilitycontext中调用接口。

通过以上方法,可安全访问鸿蒙公共目录,遵循隐私规范。

回到顶部