1, 先看效果
2, 现在 module.json5中设置 黄色的一定要设置 要不会报申请权限的错误
3, 在 EntryAbility 设置
直接cv代码
- // 使用UIExtensionAbility:将import { UIAbility } from '@kit.AbilityKit' 替换为import { UIExtensionAbility } from '@kit.AbilityKit';
- import { abilityAccessCtrl, common, Permissions, UIAbility } from '@kit.AbilityKit';
- import { window } from '@kit.ArkUI';
- import { BusinessError } from '@kit.BasicServicesKit';
- const permissions: Array<Permissions> = ['ohos.permission.MICROPHONE'];
- // 使用UIExtensionAbility:将common.UIAbilityContext 替换为common.UIExtensionContext
- function 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}`);
- })
- }
- // 使用UIExtensionAbility:将 UIAbility 替换为UIExtensionAbility
- export default class EntryAbility extends UIAbility {
- onWindowStageCreate(windowStage: window.WindowStage): void {
- // ...
- windowStage.loadContent('pages/Index', (err, data) => {
- reqPermissionsFromUser(permissions, this.context);
- // ...
- });
- }
- // ...
- }
复制代码 4, 所使用的页面进行设置
- import { abilityAccessCtrl, common, Permissions } from '@kit.AbilityKit';
- import { BusinessError } from '@kit.BasicServicesKit';
- const permissions: Array<Permissions> = ['ohos.permission.MICROPHONE'];
- // 使用UIExtensionAbility:将common.UIAbilityContext 替换为common.UIExtensionContext
- function 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}`);
- })
- }
- @Entry
- @Component
- struct Index {
- aboutToAppear() {
- // 使用UIExtensionAbility:将common.UIAbilityContext 替换为common.UIExtensionContext
- const context: common.UIAbilityContext = getContext(this) as common.UIAbilityContext;
- reqPermissionsFromUser(permissions, context);
- }
- build() {
- // ...
- Column() {
- Text('申请麦克风权限')
- }
- .width('100%')
- .height('100%')
- .justifyContent(FlexAlign.Center)
- }
- }
复制代码 5, 添加一个字段可以修改弹窗按钮上面的内容
6, 也可以参考华为官方的权限相关设置
https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/request-user-authorization-V5
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |