HarmonyOS 鸿蒙Next 华为测试人员提测要求替换ohos.permission.READ_MEDIA权限

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

HarmonyOS 鸿蒙Next 华为测试人员提测要求替换ohos.permission.READ_MEDIA权限

应用申请ohos.permission.READ_MEDIA权限即将下线,请使用@ohos.file.photoAccessHelper替换;参考:https://developer.huawei.com/consumer/cn/doc/harmonyos-releases/changelogs-targeting-api12-b025-0000001929347080#section19650175792712

我们按照如下方式获取报错,卸载重装还是报错

07-02 19:45:09.005   64524-64524  A03D00/JSAPP                   com.edraw…master.h  E     getAlbumsCallback failed with err: 14000011, medialibrary inner fail

console.info(‘getAssets’);

<span class="hljs-keyword">let</span> phAccessHelper = photoAccessHelper.getPhotoAccessHelper(context);
<span class="hljs-keyword">let</span> predicates: dataSharePredicates.DataSharePredicates = <span class="hljs-keyword">new</span> dataSharePredicates.DataSharePredicates();
predicates.equalTo(<span class="hljs-string">'album_name'</span>, <span class="hljs-string">'newAlbumName'</span>);
<span class="hljs-keyword">let</span> fetchOptions: photoAccessHelper.FetchOptions = {
  fetchColumns: [],
  predicates: predicates
};
<span class="hljs-keyword">return</span> <span class="hljs-keyword">new</span> Promise&lt;string&gt;((r,j) =&gt; {
  phAccessHelper.getAlbums(photoAccessHelper.AlbumType.USER, photoAccessHelper.AlbumSubtype.USER_GENERIC, fetchOptions, async (err, fetchResult) =&gt; {
    <span class="hljs-keyword">if</span> (err) {
      console.error(`getAlbumsCallback failed <span class="hljs-keyword">with</span> err: ${err.code}, ${err.message}`);
      j()
      <span class="hljs-keyword">return</span>;
    }
    <span class="hljs-keyword">if</span> (fetchResult === <span class="hljs-literal">undefined</span>) {
      console.error(<span class="hljs-string">'getAlbumsCallback fetchResult is undefined'</span>);
      j()
      <span class="hljs-keyword">return</span>;
    }
    <span class="hljs-keyword">let</span> album = await fetchResult.getFirstObject();

    console.info(<span class="hljs-string">'getAlbumsCallback successfully, albumName: '</span> + album.albumName);
    fetchResult.close();
    r(album.albumUri)
  });
})

2 回复
可以再检查下完整代码是否有误

在HarmonyOS鸿蒙Next版本中,针对华为测试人员提出的替换ohos.permission.READ_MEDIA权限的要求,这通常是为了提升应用的安全性和隐私保护水平。ohos.permission.READ_MEDIA权限允许应用访问设备上的媒体文件,但在新版本中,可能需要更细粒度的权限控制来减少用户隐私泄露的风险。

为了满足这一要求,开发者可以考虑使用以下替代方案:

  1. 使用特定媒体类型的权限:例如,如果应用只需要访问图片,可以使用ohos.permission.READ_IMAGES;如果只需要访问音频文件,则可以使用ohos.permission.READ_AUDIO

  2. 运行时权限请求:在应用中动态请求所需的媒体类型权限,这样用户可以在了解应用需求的基础上,有选择地授予权限。

  3. 媒体存储访问框架(MediaStore API):利用HarmonyOS提供的MediaStore API来访问媒体文件,这种方式通常不需要额外的权限,且能提供更安全的访问控制。

请确保在应用的manifest文件中正确声明这些替代权限,并在代码中妥善处理权限请求和访问逻辑。

HarmonyOS鸿蒙Next高级实战已发布,可以先学学https://www.itying.com/goods-1204.html

回到顶部