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);
}
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
Top comments (0)