HarmonyOS 申请APP\_TRACKING\_CONSENT权限无反应,麦克风权限能正常申请?

public reqPermissionsFromUser(permissions: Array<Permissions>, context: common.UIAbilityContext): void {
  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[i] === 0) {
  // 用户授权,可以继续访问目标操作
} else {
  // 用户拒绝授权,提示用户必须授权才能访问当前页面的功能,并引导用户到系统设置中打开相应的权限
  return;
}
}
// 授权成功
}).catch((err: BusinessError) => {
  console.error(`Failed to request permissions from user. Code is ${err.code}, message is ${err.message}`);
})
}


voicePermissions: Array<Permissions> = ['ohos.permission.MICROPHONE'];
oaidPermissions: Array<Permissions> = ['ohos.permission.APP_TRACKING_CONSENT'];
阅读 518
1 个回答

OAID权限在beta1版本之后被默认禁止(模拟器并没有这个限制),目前该权限暂时不开放了,是默认禁止状态。再申请授权后,如果需要用到该权限,可以引导用户打开此权限,只有在用户requestPermissionsFromUser这个接口之后,并且用户选择是否授予权限之后,才会在应用详情页显示该权限开关

参考demo

import WebView from '@ohos.web.webview';
import { abilityAccessCtrl, common, Permissions } from '@kit.AbilityKit';
import { BusinessError } from '@kit.BasicServicesKit';
import { identifier } from '@kit.AdsKit';
import { hilog } from '@kit.PerformanceAnalysisKit';

@Entry
@Component
struct Index {

  context = getContext(this) as common.UIAbilityContext;
  public reqPermissionsFromUser(permissions: Array<Permissions>, context: common.UIAbilityContext): void {
    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[i] === 0) {
          // 用户授权,可以继续访问目标操作
        } else {
          // 用户拒绝授权,提示用户必须授权才能访问当前页面的功能,并引导用户到系统设置中打开相应的权限
          return;
        }
      }
      // 授权成功
    }).catch((err: BusinessError) => {
      console.error(`Failed to request permissions from user. Code is ${err.code}, message is ${err.message}`);
    })
  }
  voicePermissions: Array<Permissions> = ['ohos.permission.MICROPHONE','ohos.permission.APP_TRACKING_CONSENT'];
  oaidPermissions: Array<Permissions> = ['ohos.permission.APP_TRACKING_CONSENT'];
  aboutToAppear(): void {
    this.reqPermissionsFromUser(this.voicePermissions,this.context)
  }

  build() {
    Column() {
      Button("打开权限").onClick(() => {
        let context = getContext(this) as common.UIAbilityContext;
        context.startAbility({
          bundleName: 'com.huawei.hmos.settings',
          abilityName: 'com.huawei.hmos.settings.MainAbility',
          uri: 'application_info_entry',
          parameters: {
            pushParams: context.abilityInfo.bundleName // 应用包名com.example.tosettingdemo 'uiAbilityContext.abilityInfo.bundleName'
          }
        });
      }).margin(10)
      Button("获取oaid").onClick(() => {
        try {
          identifier.getOAID().then((data) => {
            const oaid: string = data;
            hilog.info(0x0000, 'testTag', '%{public}s', `Success getting oaid by promise, oaid: ${oaid}`);
          }).catch((err: BusinessError) => {
            hilog.error(0x0000, 'testTag', '%{public}s',
              `get oaid by promise failed, code: ${err.code}, message: ${err.message}`);
          })
        } catch (err) {
          hilog.error(0x0000, 'testTag', '%{public}s',
            `Failed to get oaid by promise, catch error: ${err.code}, ${err.message}`);
        }
      }).margin(10)
    }
  }
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进