HarmonyOS 获取位置信息提示没有权限,如何获取权限?

代码如下:

public static getLocation() {
  try {
    let location = geoLocationManager.getLastLocation();
    return location;
  } catch (err) {
    console.error("errCode:" + (err as BusinessError.BusinessError).code + ",errMessage:" +
    (err as BusinessError.BusinessError).message);
    return null;
  }
}

错误信息:

阅读 486
1 个回答

参考示例如下:

import abilityAccessCtrl, { Permissions } from '@ohos.abilityAccessCtrl';
import common from '@ohos.app.ability.common';
import { BusinessError } from '@ohos.base';

@Entry
@Component
struct Permission {
  @State message: string = 'Hello World';

  reqPermissionsFromUser(permissions: Array<Permissions>): void {
    let context = getContext(this) as common.UIAbilityContext;
    let atManager = abilityAccessCtrl.createAtManager();
    // requestPermissionsFromUser会判断权限的授权状态来决定是否唤起弹窗
    atManager.requestPermissionsFromUser(context, permissions).then((data) => {
      let grantStatus: Array<number> = data.authResults;
      let permissions: Array<String> = data.permissions;
      console.info(`authResults is ${grantStatus}, permissions is ${permissions}`);
      let length: number = grantStatus.length;
      for (let i = 0; i < length; i++) {
        if (grantStatus[i] === 0) {
          // 用户授权,可以继续访问目标操作
        } else {
          // 用户拒绝授权,提示用户必须授权才能访问当前页面的功能,并引导用户到系统设置中打开相应的权限
          return;
        }
      }
      // 授权成功
    }).catch((err: BusinessError) => {
      console.error(`requestPermissionsFromUser failed, code is ${err.code}, message is ${err.message}`);
    })
  }

  build() {
    Row() {
      Column() {
        Text(this.message)
          .fontSize(50)
          .fontWeight(FontWeight.Bold)
          .onClick(() => {
            this.reqPermissionsFromUser([
              'ohos.permission.LOCATION', 'ohos.permission.APPROXIMATELY_LOCATION']);
          })
      }
      .width('100%')
    }
    .height('100%')
  }
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进