HarmonyOS 鸿蒙Next phAccessHelper.showAssetsCreationDialog报错
HarmonyOS 鸿蒙Next phAccessHelper.showAssetsCreationDialog报错
显示上面的错误,这里的moduleName 获取不到是什么意思?
使用的测试代码
import { BusinessError } from '@kit.BasicServicesKit';
import { fileIo as fs } from '@kit.CoreFileKit';
import { photoAccessHelper } from '@kit.MediaLibraryKit';
import { JSON } from '@kit.ArkTS';
@Entry
@Component
struct FileDemo {
@State message: string = '复制文件到应用沙箱路径';
copyFileDemo(){
let PhotoSelectOptions = new photoAccessHelper.PhotoSelectOptions();
PhotoSelectOptions.MIMEType = photoAccessHelper.PhotoViewMIMETypes.IMAGE_TYPE;
PhotoSelectOptions.maxSelectNumber = 5;
let photoPicker = new photoAccessHelper.PhotoViewPicker();
photoPicker.select(PhotoSelectOptions).then((PhotoSelectResult: photoAccessHelper.PhotoSelectResult) => {
let file = fs.openSync(PhotoSelectResult.photoUris[0], fs.OpenMode.READ_ONLY)
let file2 = fs.openSync(getContext().filesDir+'/demo.jpg', fs.OpenMode.READ_WRITE | fs.OpenMode.CREATE)
fs.copyFileSync(file.fd, file2.fd)
fs.closeSync(file);
fs.closeSync(file2);
}).catch((err: BusinessError) => {
console.error('DocumentViewPicker.select failed with err: ' + JSON.stringify(err));
});
}
build() {
Column() {
Text(this.message)
.id('FileDemoHelloWorld')
.fontSize(50)
.fontWeight(FontWeight.Bold)
.alignRules({
center: { anchor: '__container__', align: VerticalAlign.Center },
middle: { anchor: '__container__', align: HorizontalAlign.Center }
})
.onClick(() => {
this.copyFileDemo()
})
Button('保存图片到相册')
.onClick(() => {
example()
})
}
.height('100%')
.width('100%')
}
}
async function example() {
console.info('ShowAssetsCreationDialogDemo.');
try {
// 获取需要保存到媒体库的位于应用沙箱的图片/视频uri
let srcFileUris: Array<string> = [
getContext().filesDir + '/demo.jpg' // 实际场景请使用真实的uri
];
let photoCreationConfigs: Array<photoAccessHelper.PhotoCreationConfig> = [
{
title: 'test2', // 可选
fileNameExtension: 'jpg',
photoType: photoAccessHelper.PhotoType.IMAGE,
subtype: photoAccessHelper.PhotoSubtype.DEFAULT, // 可选
}
];
let context = getContext();
let phAccessHelper = photoAccessHelper.getPhotoAccessHelper(context);
let desFileUris: Array<string> = await phAccessHelper.showAssetsCreationDialog(srcFileUris, photoCreationConfigs);
console.info('showAssetsCreationDialog success, data is ' + desFileUris);
try {
let file = fs.openSync(srcFileUris[0], fs.OpenMode.READ_ONLY)
let file2 = fs.openSync(desFileUris[0], fs.OpenMode.READ_WRITE | fs.OpenMode.CREATE)
fs.copyFileSync(file.fd, file2.fd)
fs.closeSync(file);
fs.closeSync(file2);
} catch (e) {
console.log(JSON.stringify(e))
}
} catch (err) {
console.error('showAssetsCreationDialog failed, errCode is ' + err.code + ', errMsg is ' + err.message);
}
}
1 回复
针对您提到的HarmonyOS鸿蒙系统中phAccessHelper.showAssetsCreationDialog
报错的问题,这通常与权限管理、资源访问或对话框显示逻辑相关。以下是一些可能的原因分析:
-
权限不足:确保您的应用已正确申请并获得了所需的权限,特别是与访问文件、存储等相关的权限。
-
资源文件问题:检查是否所有需要的资源文件都已正确配置在项目中,且路径无误。
-
API使用不当:确认
phAccessHelper.showAssetsCreationDialog
的调用方式符合API文档要求,包括参数传递等。 -
系统兼容性问题:不同版本的HarmonyOS系统可能存在API实现的差异,确认您的代码与当前系统版本的兼容性。
-
异常处理:增加适当的异常捕获和处理逻辑,以便更准确地定位问题原因。
如果以上分析仍未解决您的问题,建议检查应用的日志文件,查找更详细的错误信息或堆栈跟踪。此外,确认开发环境(如IDE、SDK版本)是否为最新,以避免已知问题。
如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html