HarmonyOS 鸿蒙Next 华为测试人员提测要求替换ohos.permission.READ_MEDIA权限
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<string>((r,j) => {
phAccessHelper.getAlbums(photoAccessHelper.AlbumType.USER, photoAccessHelper.AlbumSubtype.USER_GENERIC, fetchOptions, async (err, fetchResult) => {
<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)
});
})
在HarmonyOS鸿蒙Next版本中,针对华为测试人员提出的替换ohos.permission.READ_MEDIA
权限的要求,这通常是为了提升应用的安全性和隐私保护水平。ohos.permission.READ_MEDIA
权限允许应用访问设备上的媒体文件,但在新版本中,可能需要更细粒度的权限控制来减少用户隐私泄露的风险。
为了满足这一要求,开发者可以考虑使用以下替代方案:
-
使用特定媒体类型的权限:例如,如果应用只需要访问图片,可以使用
ohos.permission.READ_IMAGES
;如果只需要访问音频文件,则可以使用ohos.permission.READ_AUDIO
。 -
运行时权限请求:在应用中动态请求所需的媒体类型权限,这样用户可以在了解应用需求的基础上,有选择地授予权限。
-
媒体存储访问框架(MediaStore API):利用HarmonyOS提供的MediaStore API来访问媒体文件,这种方式通常不需要额外的权限,且能提供更安全的访问控制。
请确保在应用的manifest文件中正确声明这些替代权限,并在代码中妥善处理权限请求和访问逻辑。
HarmonyOS鸿蒙Next高级实战已发布,可以先学学:https://www.itying.com/goods-1204.html