HarmonyOS 鸿蒙Next 从文件管理器选择音乐文件后如何拥有永久化权限而不需copy

发布于 1周前 作者 eggper 最后一次编辑是 5天前 来自 鸿蒙OS

HarmonyOS 鸿蒙Next 从文件管理器选择音乐文件后如何拥有永久化权限而不需

let audioSelectOptions = new picker.AudioSelectOptions();
let audioPicker = new picker.AudioViewPicker(this.context);
audioPicker.select(audioSelectOptions).then((audioSelectResult: Array<string>) => {
  if (audioSelectResult !== null && audioSelectResult !== undefined) {
    let arrStr: string[] = [];
    for(let i=0;i<audioSelectResult.length;i++){

      let filePath = getContext(this).filesDir +'/'+ Utility.getMediaNameByUri(audioSelectResult[i])
      Logger.info(TAG,'filePath uri: ' + filePath);
      arrStr.push(filePath)
      let file = fileIo.openSync(audioSelectResult[i], fileIo.OpenMode.READ_ONLY)
      let file2 = fileIo.openSync(filePath, fileIo.OpenMode.READ_WRITE | fileIo.OpenMode.CREATE)
      fileIo.copyFileSync(file.fd, file2.fd)
      fileIo.closeSync(file);
      fileIo.closeSync(file2);

    }

更多关于HarmonyOS 鸿蒙Next 从文件管理器选择音乐文件后如何拥有永久化权限而不需copy的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html

1 回复

更多关于HarmonyOS 鸿蒙Next 从文件管理器选择音乐文件后如何拥有永久化权限而不需copy的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS鸿蒙Next系统中,若要从文件管理器选择音乐文件后拥有永久化访问权限而不需复制文件,可以通过以下方式实现:

HarmonyOS提供了SAF(Storage Access Framework)机制,允许应用请求用户授权访问特定文件或目录。当你从文件管理器选择音乐文件时,系统会弹出一个权限请求对话框,用户可以选择“仅一次”或“始终允许”访问该文件。

要实现永久化权限,关键在于确保用户在权限请求对话框中选择“始终允许”。这通常涉及以下几个步骤:

  1. 应用通过Intent调用系统文件选择器。
  2. 用户选择文件后,系统会询问权限类型(仅一次/始终允许)。
  3. 用户选择“始终允许”,则系统会记住这个选择,后续访问该文件或同类文件时不再需要再次请求权限。

请注意,用户的权限选择受系统保护,应用无法编程方式强制用户选择“始终允许”。此外,若用户后续在系统设置中更改了权限,应用需要能够妥善处理权限变化。

如果应用需要频繁访问同一文件或目录,可以在首次请求时引导用户选择“始终允许”,以减少后续访问时的权限请求次数。

如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

回到顶部