鸿蒙Next开发中如何选择公共目录进行访问
在鸿蒙Next开发中,如何正确选择公共目录进行文件访问?比如需要访问相册、下载目录等公共资源时,具体的API调用方法和权限配置是怎样的?能否提供示例代码说明不同场景下的最佳实践?
2 回复
鸿蒙Next选公共目录?记住口诀:
“先问权限,再挑地盘”
用@ohos.file.fs的getOrCreateDir,比如DIR_DOCUMENTS存文件,DIR_DOWNLOAD放下载。
别乱进DIR_APPS(系统会瞪你)!
记得在module.json5里声明权限,否则系统会假装听不懂🌚
简单说:选目录像去朋友家——去客厅可以,闯卧室会被赶出来!
更多关于鸿蒙Next开发中如何选择公共目录进行访问的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
在鸿蒙Next开发中,访问公共目录(如文档、下载、图片等)需使用媒体库管理接口,通过用户授权和PhotoAccessHelper选择目录。以下是关键步骤和示例代码:
步骤说明:
- 申请权限:在
module.json5中配置ohos.permission.READ_IMAGEVIDEO和ohos.permission.WRITE_IMAGEVIDEO权限。 - 获取PhotoAccessHelper实例:通过系统能力调用媒体库接口。
- 获取公共目录:使用
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接口进行文件读写。
注意事项:
- 仅支持系统预置公共目录,无法自定义路径。
- 确保在
UIAbility的context中调用接口。
通过以上方法,可安全访问鸿蒙公共目录,遵循隐私规范。

