HarmonyOS 鸿蒙Next 添加敏感权限,动态申请权限时没弹授权弹框

HarmonyOS 鸿蒙Next 添加敏感权限,动态申请权限时没弹授权弹框

清单里面添加了权限,在动态申请权限时报错

2 回复

需要先申请模糊位置权限ohos.permission.APPROXIMATELY_LOCATION,才可申请ohos.permission.LOCATION。 这两个都配置了之后就会有LOCATION的弹窗。


,您先将您module.json5中的location权限改为:

    'requestPermissions': [

      {'name':'ohos.permission.INTERNET'},

      {'name':'ohos.permission.APPROXIMATELY_LOCATION',

        'reason': '$string:app_name',

        'usedScene': {

          'abilities': [

            'EntryAbility'

          ],

          'when': 'inuse'

        }

      },

      {

        'name':'ohos.permission.LOCATION',

        'reason': '$string:app_name',

        'usedScene': {

          'abilities': [

            'EntryAbility'

          ],

          'when': 'inuse'

        }

      }

    ],

然后将EntryAblity.ets中的onWindowStageCreate 替换为:

onWindowStageCreate(windowStage: window.WindowStage): void {

    // Main window is created, set main page for this ability

    hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onWindowStageCreate');

    let permissions: Array<Permissions> = [

      'ohos.permission.APPROXIMATELY_LOCATION',

      'ohos.permission.LOCATION',

    ];

    //校验当前用户是否已授权

    let atManager = abilityAccessCtrl.createAtManager();

    atManager.requestPermissionsFromUser(this.context,permissions)

      .then((data) => {

        console.info('data:' + JSON.stringify(data));

        console.info('data permissions:' + data.permissions);

        console.info('data authResults:' + data.authResults);

        hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onWindowStageCreate');

        windowStage.loadContent('pages/Page0', (err, data) => {

          if (err.code) {

            hilog.error(0x0000, 'testTag', 'Failed to load the content. Cause: %{public}s', JSON.stringify(err) ?? '');

            return;

          }

          hilog.info(0x0000, 'testTag', 'Succeeded in loading the content. Data: %{public}s', JSON.stringify(data) ?? '');

        });

      })

      .catch((err: BusinessError) => {

        console.info('data:' + JSON.stringify(err));

      })

  }

因为AuthUtil应该是您封装的类,我这边看不到具体实现。请您用我提供的代码试下是否有定位弹框。

更多关于HarmonyOS 鸿蒙Next 添加敏感权限,动态申请权限时没弹授权弹框的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS鸿蒙Next系统中,添加敏感权限并尝试动态申请时,如果未弹出授权弹框,可能的原因及处理方式如下:

  1. 权限声明缺失:确保在config.json文件中已正确声明所需敏感权限。例如,申请位置权限需添加"ohos.permission.READ_LOCATION""ohos.permission.WRITE_LOCATION"

  2. 权限分组检查:部分权限属于同一权限组,若已授予组内其他权限,系统可能不再弹出弹框。确认是否已授予同类权限。

  3. 应用状态:应用处于后台或被系统限制时,可能无法弹出权限请求弹框。确保应用在前台运行且未被系统限制。

  4. 系统策略:某些系统策略可能阻止权限弹框的显示,如设备处于特定模式(如儿童模式)。检查设备设置,确保无相关限制。

  5. 代码实现:检查动态申请权限的代码实现是否正确,确保使用了正确的API和逻辑。

  6. 版本兼容性:确认鸿蒙系统版本与API兼容性,部分新权限或特性可能在旧版本系统中不支持。

如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

回到顶部