HarmonyOS 鸿蒙Next在模拟器上使用DocumentViewPicker保存返回结果为undefined
HarmonyOS 鸿蒙Next在模拟器上使用DocumentViewPicker保存返回结果为undefined 在开发中使用的内置db后,无法直接查看db,于是试验了网上的backup方式,添加了如下permissions之后
{
"name": "ohos.permission.READ_MEDIA",
},
{
"name": "ohos.permission.WRITE_MEDIA",
},
{
"name": "ohos.permission.MEDIA_LOCATION",
}
代码如下:
static dbExport = async () => {
DBUtils.backUp()
try {
let db_file = '/data/storage/el2/database/entry/rdb/' + DBConfig.db_backUp_name
//用文件选择器选择用户区目录和文件名进行保存
let save_option = new picker.DocumentSaveOptions();
//写好默认的文件名,如果存在同名文件,系统拷贝时会自动重命名
save_option.newFileNames = ["123.txt"];
let file_picker = new picker.DocumentViewPicker();
//need permission ohos.permission.READ_MEDIA&&ohos.permission.WRITE_MEDIA
file_picker.save(save_option).then((res: Array<string>) => {
let target_uri = res[0]
let target_file = fs.openSync(target_uri, fs.OpenMode.READ_WRITE | fs.OpenMode.CREATE)
fs.copyFile(db_file, target_file.fd,).then(() => {
//拷贝成功后关闭文件
fs.closeSync(target_file.fd)
}).catch((err) => {
console.error('xxx', '拷贝文件失败: ', err.message, err.code)
})
}).catch((err) => {
DBExportUtils
console.error('xxx', 'DocumentViewPicker.save错误: ' + JSON.stringify(err));
});
} catch (error) {
let err = error;
console.error('xxx', 'DocumentViewPicker错误: ' + JSON.stringify(err));
}
}
结果是在实际运行中save得到的res为undefined,没有返回url。请问什么什么问题, 按照官网doc写的代码。。。。是不是要真机才行,如果是,那就太麻烦了, 墙烈要求官方回复
更多关于HarmonyOS 鸿蒙Next在模拟器上使用DocumentViewPicker保存返回结果为undefined的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
在HarmonyOS鸿蒙Next中,使用DocumentViewPicker
保存文件时返回undefined
,可能是由于以下原因:
-
权限问题:应用未正确申请或获取文件读写权限。确保在
config.json
中声明了ohos.permission.READ_MEDIA
和ohos.permission.WRITE_MEDIA
权限,并在运行时动态申请。 -
路径问题:保存路径可能无效或不可写。检查保存路径是否正确,并确保路径在应用的沙盒目录内或外部存储的公共目录中。
-
回调未正确处理:
DocumentViewPicker
的保存操作是异步的,可能未正确处理回调函数。确保在保存操作完成后,正确获取并处理返回的结果。 -
模拟器限制:模拟器可能存在文件系统限制,导致保存操作失败。尝试在真机上测试以排除模拟器问题。
-
API使用错误:检查
DocumentViewPicker
的API调用是否正确,包括参数传递和回调函数的实现。 -
系统版本兼容性:确保使用的
DocumentViewPicker
API与当前鸿蒙系统版本兼容,避免因API变更导致的问题。 -
文件类型限制:某些文件类型可能受系统限制,无法通过
DocumentViewPicker
保存。检查文件类型是否符合系统要求。 -
存储空间不足:模拟器或设备的存储空间不足可能导致保存失败。检查存储空间是否充足。
-
异步操作未完成:保存操作可能尚未完成,导致返回
undefined
。确保在保存操作完成后再获取结果。 -
日志排查:通过查看系统日志或调试信息,进一步排查具体错误原因。
以上是可能导致DocumentViewPicker
保存返回undefined
的常见原因,需逐一排查。
更多关于HarmonyOS 鸿蒙Next在模拟器上使用DocumentViewPicker保存返回结果为undefined的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
在HarmonyOS鸿蒙Next模拟器上使用DocumentViewPicker
时,返回结果为undefined
,可能是以下原因导致的:
- 权限问题:确保应用已获取
ohos.permission.READ_MEDIA
和ohos.permission.WRITE_MEDIA
权限。 - API调用错误:检查
DocumentViewPicker
的调用方式是否正确,确保参数配置无误。 - 模拟器限制:模拟器可能不支持某些文件操作功能,建议在真机上进行测试。
- 回调处理不当:确保正确实现了
onResult
回调,并处理了可能出现的异常情况。
建议检查以上问题,并参考官方文档进行调试。