HarmonyOS 鸿蒙Next:申请一些权限后,再想申请另外权限直接返回成功但实际不可调用对应权限方法

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

HarmonyOS 鸿蒙Next:申请一些权限后,再想申请另外权限直接返回成功但实际不可调用对应权限方法

在atManager.checkAccessToken(tokenID, permission)失败然后调用 atManager.requestPermissionsFromUser 申请了location权限后, 如果再次checkAccessToken另外的权限(GET_NETWORK_INFO),返回已经有权限,但是调用connection.getDefaultNetSync()失败抛出权限错误。

2 回复

申请了location权限后,调用下面这个方法试试

async checkNetPermission() {
   let permissions: Array<Permissions> = ['ohos.permission.GET_NETWORK_INFO'];
   let NetStatus = await this.accessToken(permissions[0]);

   // 使用 getDefaultNetSync
   if (NetStatus == abilityAccessCtrl.GrantStatus.PERMISSION_GRANTED) {
       console.log('Net 已经申请完权限了');
       let netHandler = connection.getDefaultNetSync().netId;
       console.log(netHandler.toString());
   } else {
       console.log('Net 需要申请权限');
       let atManager = abilityAccessCtrl.createAtManager();

       atManager.requestPermissionsFromUser(getContext(this), permissions, (err, permissionResult) => {
           if (err) {
               console.log('申请权限失败');
               return;
           }

           let grantStatus: Array<number> = permissionResult.authResults;
           let grantPermissions: Array<string> = permissionResult.permissions;
           let length: number = grantStatus.length;

           console.log('net user permissioned length: ' + JSON.stringify(grantPermissions) + ', length: ' + length);

           for (let i = 0; i < length; i++) {
               if (grantStatus[i] === 0) {
                   console.log('net user has agreed permissioned');
               } else {
                   console.log('net user has disagree permissioned');
                   this.openPermissionSettings();
               }
           }
       });
   }
}

针对您提到的HarmonyOS鸿蒙Next系统中,在申请部分权限后,再申请其他权限直接返回成功但实际无法调用对应权限方法的问题,这通常可能是由于权限管理系统的内部逻辑错误、权限申请顺序问题或系统缓存导致的状态不一致。

在HarmonyOS系统中,权限的申请和使用需要遵循严格的流程。如果系统错误地返回了权限申请成功的状态,但实际并未正确授权,这可能是由于系统内部的bug或权限管理策略的不完善。

为了解决这个问题,您可以尝试以下步骤:

  1. 确保您的应用已经正确声明了所有需要的权限,并在用户界面中向用户清晰展示了权限申请的理由。

  2. 尝试重新申请权限,并检查是否有其他权限或系统状态影响了权限的申请结果。

  3. 清理应用缓存和数据,然后重新启动应用,看是否能解决问题。

  4. 检查HarmonyOS系统的更新,看是否有相关的系统修复。

如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html 。他们将能够提供更具体的帮助和解决方案。

回到顶部