OpenHarmony开发者论坛

标题: 申请权限成功后,仍然提示 BusinessError 202: Permission denied. Non-system APP calling system API [打印本页]

作者: wu_wu_wu    时间: 2024-3-3 21:30
标题: 申请权限成功后,仍然提示 BusinessError 202: Permission denied. Non-system APP calling system API
[md]下面是报错信息和权限申请的信息

![image.png](https://forums-obs.openharmony.c ... nnun7cjgz77catn.png "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 === 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);
  }
...
}
```
[/md]
作者: 深开鸿_王石    时间: 2024-3-5 08:38
这个需要的是系统应用权限,要改自己的应用为系统应用
作者: wu_wu_wu    时间: 2024-3-6 18:38
回复 深开鸿_王石: 您好,感谢您的回答。但我仍然没有明白您说的改为习题应用的意思,我现在按照开发文档中的《访问控制授权申请指导》部分修改了moudle.json5文件,ACL方式声明。请问您可以更加详细的说明吗?谢谢
作者: 深开鸿_王石    时间: 2024-3-7 18:10
回复 wu_wu_wu: 仔细看看这个文档,给system权限要改sdk里的UnsgnedReleasedProfileTemplate.json
https://forums.openharmony.cn/fo ... thread&tid=1454
作者: koubo    时间: 2024-5-21 13:35
回复 深开鸿_王石: 已经按照参考文档方式将第三方应用做成系统应用了,通过bm dump 可以查到应用实际为system_core,但是该应用的permission始终为空,不知道哪里出了问题
作者: 深开鸿_王石    时间: 2024-8-14 16:44
回复 koubo: ohos.permission.GET_BUNDLE_INFO
ohos.permission.GET_BUNDLE_INFO_PRIVILEGED

这两个权限都配了吗
作者: callmemaha    时间: 2024-11-8 17:06
您好,楼主,请问您后来如何解决这个问题的?我遇到跟你相似的问题,参考文档方式将第三方应用做成系统应用了
bm dump 显示"appPrivilegeLevel": "system_core", "permissions": [],
使用ServiceExtensionAbility时候仍然会提示Failed to start ServiceExtensionAbility. Code is 202, message is The application is not system-app, can not use system-api.
作者: 深开鸿_王石    时间: 2024-11-11 15:59
回复 koubo: 这些系列文档有对应说法,但是你要看看OH版本,也需要看看你的设备,看setting里的权限是否授权了,一般申请权限还要该module.json5,这些你也可以找sample看看别人怎么写的;

https://docs.openharmony.cn/page ... application-mode.md




欢迎光临 OpenHarmony开发者论坛 (https://forums.openharmony.cn/) Powered by Discuz! X3.5