DEV Community

HarmonyOS
HarmonyOS

Posted on

Simplest Way to Request User Permission

Read the original article:Simplest Way to Request User Permission

Question

How do I request microphone access (ohos.permission.MICROPHONE) in a HarmonyOS app?

Short Answer

Declare the permission in module.json5 with a reason string and usedScene, then request it at runtime using abilityAccessCtrl.AtManager. If the user denies the prompt, open Settings and retry. Ensure mic_reason exists in string.json.

// module.json5
"requestPermissions": [
  {
    "name": "ohos.permission.MICROPHONE",
    "reason": "$string:mic_reason",
    "usedScene": { "when": "inuse" }
  }
]Copy codeCopy code
import { abilityAccessCtrl, PermissionRequestResult, Permissions } from '@kit.AbilityKit';
import { BusinessError } from '@kit.BasicServicesKit';

async function requestMicPermission(): Promise<void> {
  const atManager: abilityAccessCtrl.AtManager = abilityAccessCtrl.createAtManager();
  const context = this.getUIContext().getHostContext();
  const permissions: Permissions[] = ['ohos.permission.MICROPHONE'];

  try {
    let granted = (await atManager.requestPermissionsFromUser(
      context, permissions
    ) as Promise<PermissionRequestResult>).authResults[0] === 0;

    while (!granted) {
      granted = (await atManager.requestPermissionOnSetting(context, permissions))[0] ===
        abilityAccessCtrl.GrantStatus.PERMISSION_GRANTED;
    }
  } catch (e) {
    const err = e as BusinessError;
    console.error(`Mic permission check failed. Code: ${err.code}, message: ${err.message}`);
  }
}

onDidBuild(): void {
  requestMicPermission.call(this);
}
Enter fullscreen mode Exit fullscreen mode

Applicable Scenarios

  • Voice recording, speech-to-text, and audio notes
  • VoIP or in-call audio capture
  • Wake-word/keyword detection and audio metering
  • Wearable and phone apps that capture audio while in active use

Reference Link

request-user-authorization

Written by Sinan Yilmaz

Top comments (0)