我们希望自己做一个图片选择器,使用以下官方文档提供的方式编译媒体库
但是提示没有权限。fetchResult fail with error: 13900012, without medialibrary permission
这个api所涉及的权限,不对normal应用开放么?
let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates();
let fetchOptions: photoAccessHelper.FetchOptions = {
fetchColumns: [],
predicates: predicates
};
photoAccessHelper.getPhotoAccessHelper(this.context).getAssets(fetchOptions, async (err, fetchResult) => {
if (fetchResult !== undefined) {
console.info('fetchResult success');
let photoAsset: photoAccessHelper.PhotoAsset = await fetchResult.getFirstObject();
if (photoAsset !== undefined) {
console.info('photoAsset.displayName : ' + photoAsset.displayName);
}
} else {
console.error(`fetchResult fail with error: ${err.code}, ${err.message}`);
}
});
ohos.permission.READ\_IMAGEVIDEO 的权限级别是system\_basic,权限的授权方式为user\_grant(用户授权),即开发者在module.json5文件中配置对应的权限后,需要使用接口abilityAccessCtrl.requestPermissionsFromUser去校验当前用户是否已授权。如果是,应用可以直接访问/操作目标对象;否则需要弹框向用户申请授权。
开发步骤:
1、READ\_IMAGEVIDEO 权限为受控开放权限,通常是不允许三方应用申请的。如果有特殊场景需要使用,请提供相关申请材料到应用市场(AGC)申请相应权限证书。申请前请参考受限开发权限列表,确保应用符合可申请的场景。然后再参考申请使用受限权限,完成受限开放权限的申请。
2、在配置文件module.json5中声明权限。
3、向用户申请授权。
参考文档:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/photoaccesshelper-preparation-V5\#申请相册管理模块功能相关权限
申请使用受限权限请参考如下文档:
https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/declare-permissions-in-acl-V5
当前可通过DevEco Studio完成ACL方式跨级别申请权限,但该方法仅用于应用调试阶段使用,不可用于发布上架应用市场。如果需要开发商用版本的应用,请在对应的应用市场进行发布证书和Profile文件的申请。
参考文档:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/ide-signing-0000001587684945-V5\#section157591551175916