鸿蒙 申请权限

张裕  高级会员 | 2024-8-31 11:25:22 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 212|帖子 212|积分 636

1, 先看效果



2, 现在 module.json5中设置 黄色的一定要设置  要不会报申请权限的错误

 


3, 在 EntryAbility 设置


 

 直接cv代码
  1. // 使用UIExtensionAbility:将import { UIAbility } from '@kit.AbilityKit' 替换为import { UIExtensionAbility } from '@kit.AbilityKit';
  2. import { abilityAccessCtrl, common, Permissions, UIAbility } from '@kit.AbilityKit';
  3. import { window } from '@kit.ArkUI';
  4. import { BusinessError } from '@kit.BasicServicesKit';
  5. const permissions: Array<Permissions> = ['ohos.permission.MICROPHONE'];
  6. // 使用UIExtensionAbility:将common.UIAbilityContext 替换为common.UIExtensionContext
  7. function reqPermissionsFromUser(permissions: Array<Permissions>, context: common.UIAbilityContext): void {
  8.   let atManager: abilityAccessCtrl.AtManager = abilityAccessCtrl.createAtManager();
  9.   // requestPermissionsFromUser会判断权限的授权状态来决定是否唤起弹窗
  10.   atManager.requestPermissionsFromUser(context, permissions).then((data) => {
  11.     let grantStatus: Array<number> = data.authResults;
  12.     let length: number = grantStatus.length;
  13.     for (let i = 0; i < length; i++) {
  14.       if (grantStatus[i] === 0) {
  15.         // 用户授权,可以继续访问目标操作
  16.       } else {
  17.         // 用户拒绝授权,提示用户必须授权才能访问当前页面的功能,并引导用户到系统设置中打开相应的权限
  18.         return;
  19.       }
  20.     }
  21.     // 授权成功
  22.   }).catch((err: BusinessError) => {
  23.     console.error(`Failed to request permissions from user. Code is ${err.code}, message is ${err.message}`);
  24.   })
  25. }
  26. // 使用UIExtensionAbility:将 UIAbility 替换为UIExtensionAbility
  27. export default class EntryAbility extends UIAbility {
  28.   onWindowStageCreate(windowStage: window.WindowStage): void {
  29.     // ...
  30.     windowStage.loadContent('pages/Index', (err, data) => {
  31.       reqPermissionsFromUser(permissions, this.context);
  32.     // ...
  33.     });
  34.   }
  35.   // ...
  36. }
复制代码
4, 所使用的页面进行设置

 

  1. import { abilityAccessCtrl, common, Permissions } from '@kit.AbilityKit';
  2. import { BusinessError } from '@kit.BasicServicesKit';
  3. const permissions: Array<Permissions> = ['ohos.permission.MICROPHONE'];
  4. // 使用UIExtensionAbility:将common.UIAbilityContext 替换为common.UIExtensionContext
  5. function reqPermissionsFromUser(permissions: Array<Permissions>, context: common.UIAbilityContext): void {
  6.   let atManager: abilityAccessCtrl.AtManager = abilityAccessCtrl.createAtManager();
  7.   // requestPermissionsFromUser会判断权限的授权状态来决定是否唤起弹窗
  8.   atManager.requestPermissionsFromUser(context, permissions).then((data) => {
  9.     let grantStatus: Array<number> = data.authResults;
  10.     let length: number = grantStatus.length;
  11.     for (let i = 0; i < length; i++) {
  12.       if (grantStatus[i] === 0) {
  13.         // 用户授权,可以继续访问目标操作
  14.       } else {
  15.         // 用户拒绝授权,提示用户必须授权才能访问当前页面的功能,并引导用户到系统设置中打开相应的权限
  16.         return;
  17.       }
  18.     }
  19.     // 授权成功
  20.   }).catch((err: BusinessError) => {
  21.     console.error(`Failed to request permissions from user. Code is ${err.code}, message is ${err.message}`);
  22.   })
  23. }
  24. @Entry
  25. @Component
  26. struct Index {
  27.   aboutToAppear() {
  28.     // 使用UIExtensionAbility:将common.UIAbilityContext 替换为common.UIExtensionContext
  29.     const context: common.UIAbilityContext = getContext(this) as common.UIAbilityContext;
  30.     reqPermissionsFromUser(permissions, context);
  31.   }
  32.   build() {
  33.     // ...
  34.     Column() {
  35.       Text('申请麦克风权限')
  36.     }
  37.     .width('100%')
  38.     .height('100%')
  39.     .justifyContent(FlexAlign.Center)
  40.   }
  41. }
复制代码
 5, 添加一个字段可以修改弹窗按钮上面的内容


6, 也可以参考华为官方的权限相关设置

 
https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/request-user-authorization-V5



免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

张裕

高级会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表