HarmonyOS 无法获取位置信息?

配置权限后无法获取位置信息,提示权限错误201。

阅读 543
1 个回答

错误码为201:权限验证失败。应用程序不具有调用API所需的权限,当前没有开启权限,开启权限。参考文档:https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-geolocationmanager-V5\#geolocationmanagergetcurrentlocation

需要用代码打开权限弹窗,点击允许:

import { common, abilityAccessCtrl, Permissions, PermissionRequestResult, Want } from '@kit.AbilityKit';
import { BusinessError } from '@kit.BasicServicesKit';
import { bundleManager } from '@kit.AbilityKit';
import { hilog } from '@kit.PerformanceAnalysisKit';

@Entry
@Component
struct Permission {
  @State message: string = 'Hello World';
  @State userGrant: boolean = false
  @State intervalID: number = 0

  async reqPermissionsFromUser(): Promise<number[]> {
    // hilog.info(0x0001, this.TAG, 'reqPermissionsFromUser start ')
    let context = getContext() as common.UIAbilityContext;
    let atManager = abilityAccessCtrl.createAtManager();
    // let grantStatus = await atManager.requestPermissionsFromUser(context, ['ohos.permission.APP_TRACKING_CONSENT']);
    let grantStatus = await atManager.requestPermissionsFromUser(context,
      ['ohos.permission.APPROXIMATELY_LOCATION', 'ohos.permission.LOCATION']);
    // let grantStatus = await atManager.requestPermissionsFromUser(context, ['ohos.permission.APPROXIMATELY_LOCATION','ohos.permission.LOCATION']);
    return grantStatus.authResults;
  }

  // 申请权限
  async requestLocationPermission() {
    let grantStatus = await this.reqPermissionsFromUser()
    for (let i = 0; i < grantStatus.length; i++) {
      if (grantStatus[i] === 0) {
        // 用户授权,可以继续访问目标操作
        // hilog.info(0x0001, this.TAG, 'requestPermissionsFromUser success');
        this.userGrant = true;
      }
    }
  }

  async aboutToAppear() {
    await this.requestLocationPermission();
  }

  build() {
    RelativeContainer() {
      Text(this.message)
        .id('PermissionHelloWorld')
        .fontSize(50)
        .fontWeight(FontWeight.Bold)
        .alignRules({
          center: { anchor: '__container__', align: VerticalAlign.Center },
          middle: { anchor: '__container__', align: HorizontalAlign.Center }
        })
    }
    .height('100%')
    .width('100%')
  }
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进