• Lv0
    粉丝0

积分4 / 贡献0

提问3答案被采纳0文章0

申请权限成功后,仍然提示 BusinessError 202: Permission denied. Non-system APP calling system API

wu_wu_wu 显示全部楼层 发表于 2024-3-3 21:30:07

下面是报错信息和权限申请的信息

image.png

struct Index {const permissions: Array<Permissions> = ['ohos.permission.GET_INSTALLED_BUNDLE_LIST'];

function reqPermissionsFromUser(permissions: Array<Permissions>, context: common.UIAbilityContext): void {
  let appFlags :number = bundleManager.ApplicationFlag.GET_APPLICATION_INFO_DEFAULT;
  let atManager: abilityAccessCtrl.AtManager = abilityAccessCtrl.createAtManager();
  // requestPermissionsFromUser会判断权限的授权状态来决定是否唤起弹窗
  atManager.requestPermissionsFromUser(context, permissions).then((data) => {
    let grantStatus: Array<number> = data.authResults;
    let length: number = grantStatus.length;
    for (let i = 0; i < length; i++) {
      if (grantStatus[i] === 0) {
        // 用户授权,可以继续访问目标操作
        console.info("data:" + JSON.stringify(data));
        console.info("data permissions:" + data.permissions);
        console.info("data authResults:" + data.authResults);
        bundleManager.getAllApplicationInfo(appFlags, (err, data) => {
          if (err) {
            hilog.error(0x0000, 'testTag', 'getAllApplicationInfo failed: %{public}s', err.message);
          } else {
            hilog.info(0x0000, 'testTag', 'getAllApplicationInfo successfully: %{public}s', JSON.stringify(data));
          }
        });

      } else {
        // 用户拒绝授权,提示用户必须授权才能访问当前页面的功能,并引导用户到系统设置中打开相应的权限
        return;
      }
    }
    // 授权成功
  }).catch((err: BusinessError) => {
    console.error(`Failed to request permissions from user. Code is ${err.code}, message is ${err.message}`);
  })
}

@Entry
@Component
struct Index {
aboutToAppear() {
    const context: common.UIAbilityContext = getContext(this) as common.UIAbilityContext;
    reqPermissionsFromUser(permissions, context);
  }
...
}

您尚未登录,无法参与评论,登录后可以:
参与开源共建问题交流
认同或收藏高质量问答
获取积分成为开源共建先驱

精彩评论5

深开鸿_王石

沙发 发表于 2024-3-5 08:38:22
这个需要的是系统应用权限,要改自己的应用为系统应用

wu_wu_wu

发表于 2024-3-6 18:38  IP属地: - 中国江苏省扬州市 中国电信IDC

回复 深开鸿_王石: 您好,感谢您的回答。但我仍然没有明白您说的改为习题应用的意思,我现在按照开发文档中的《访问控制授权申请指导》部分修改了moudle.json5文件,ACL方式声明。请问您可以更加详细的说明吗?谢谢

深开鸿_王石

发表于 2024-3-7 18:10  IP属地: 广东省广州市

回复 wu_wu_wu: 仔细看看这个文档,给system权限要改sdk里的UnsgnedReleasedProfileTemplate.json
https://forums.openharmony.cn/fo ... thread&tid=1454

koubo

发表于 2024-5-21 13:35  IP属地: 湖南省

回复 深开鸿_王石: 已经按照参考文档方式将第三方应用做成系统应用了,通过bm dump 可以查到应用实际为system_core,但是该应用的permission始终为空,不知道哪里出了问题

【4 条回复】 查看全部
共5 条回复,点击查看

Copyright   ©2023  OpenHarmony开发者论坛  京ICP备2020036654号-3 |技术支持 Discuz!

返回顶部