首先在module.json5文件中申请需要的权限(地理位置权限可以根据需要申请,非必选);"requestPermissions": [
{
"name": "ohos.permission.CAMERA",
"usedScene": {
"abilities": [
"FormAbility"
],
"when": "always"
},
"reason": "$string:Camera_Permission_Request"
},
{
"name": "ohos.permission.MICROPHONE",
"usedScene": {
"abilities": [
"FormAbility"
],
"when": "always"
},
"reason": "$string:Camera_Permission_Request"
},
// The geographical location permission can be applied for as required. This parameter is optional.
{
"name": "ohos.permission.MEDIA_LOCATION",
"usedScene": {
"abilities": [
"FormAbility"
],
"when": "always"
},
"reason": "$string:Camera_Permission_Request"
}
], 接着在EntryAbility.ets中onWindowStageCreate中使用requestPermissionsFromUser方法获取权限。onWindowStageCreate(windowStage: window.WindowStage): void {
let atManager = abilityAccessCtrl.createAtManager();
atManager.requestPermissionsFromUser(this.context,
[
'ohos.permission.CAMERA',
'ohos.permission.MICROPHONE',
'ohos.permission.MEDIA_LOCATION'
]
).then((data) => {
console.info('data:' + JSON.stringify(data));
console.info('data permissions:' + data.permissions);
console.info('data authResults:' + data.authResults);
// Main window is created, set main page for this ability
hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onWindowStageCreate');
windowStage.loadContent('pages/CameraPreviewFlow', (err, data) => {
if (err.code) {
hilog.error(0x0000, 'testTag', 'Failed to load the content. Cause: %{public}s', JSON.stringify(err) ?? '');
return;
}
hilog.info(0x0000, 'testTag', 'Succeeded in loading the content. Data: %{public}s', JSON.stringify(data) ?? '');
});
}).catch((err: BusinessError) => {
console.info('data:' + JSON.stringify(err));
});
}