HarmonyOS 鸿蒙Next在模拟器上使用DocumentViewPicker保存返回结果为undefined

发布于 1周前 作者 sinazl 来自 鸿蒙OS

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

2 回复

在HarmonyOS鸿蒙Next中,使用DocumentViewPicker保存文件时返回undefined,可能是由于以下原因:

  1. 权限问题:应用未正确申请或获取文件读写权限。确保在config.json中声明了ohos.permission.READ_MEDIAohos.permission.WRITE_MEDIA权限,并在运行时动态申请。

  2. 路径问题:保存路径可能无效或不可写。检查保存路径是否正确,并确保路径在应用的沙盒目录内或外部存储的公共目录中。

  3. 回调未正确处理:DocumentViewPicker的保存操作是异步的,可能未正确处理回调函数。确保在保存操作完成后,正确获取并处理返回的结果。

  4. 模拟器限制:模拟器可能存在文件系统限制,导致保存操作失败。尝试在真机上测试以排除模拟器问题。

  5. API使用错误:检查DocumentViewPicker的API调用是否正确,包括参数传递和回调函数的实现。

  6. 系统版本兼容性:确保使用的DocumentViewPicker API与当前鸿蒙系统版本兼容,避免因API变更导致的问题。

  7. 文件类型限制:某些文件类型可能受系统限制,无法通过DocumentViewPicker保存。检查文件类型是否符合系统要求。

  8. 存储空间不足:模拟器或设备的存储空间不足可能导致保存失败。检查存储空间是否充足。

  9. 异步操作未完成:保存操作可能尚未完成,导致返回undefined。确保在保存操作完成后再获取结果。

  10. 日志排查:通过查看系统日志或调试信息,进一步排查具体错误原因。

以上是可能导致DocumentViewPicker保存返回undefined的常见原因,需逐一排查。

更多关于HarmonyOS 鸿蒙Next在模拟器上使用DocumentViewPicker保存返回结果为undefined的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS鸿蒙Next模拟器上使用DocumentViewPicker时,返回结果为undefined,可能是以下原因导致的:

  1. 权限问题:确保应用已获取ohos.permission.READ_MEDIAohos.permission.WRITE_MEDIA权限。
  2. API调用错误:检查DocumentViewPicker的调用方式是否正确,确保参数配置无误。
  3. 模拟器限制:模拟器可能不支持某些文件操作功能,建议在真机上进行测试。
  4. 回调处理不当:确保正确实现了onResult回调,并处理了可能出现的异常情况。

建议检查以上问题,并参考官方文档进行调试。

回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!