关于鸿蒙next 调用系统权限麦克风

使用app的时候都清楚,想使用麦克风、摄像头,存储照片等,都需要调用系统的权限,没有手机操作系统权限你也使用不了app所提供的功能,虽然app可以正常打开,但是你需要的功能是没办法使用的。今天把自己在鸿蒙学习中遇到的问题打算记录下来,并整理成自己的学习之路,今天来说一下麦克风的权限的开启。
在EntryAbility.ets中,在oncreate函数里,没有加载页面的时候去申请一下系统权限。代码如下:
async onCreate(want: Want, launchParam: AbilityConstant.LaunchParam) {
hilog.info(0x0000, ‘testTag’, ‘%{public}s’, ‘Ability onCreate’);

//一进app进行的权限申请(必须),不然页面调用麦克风权限没有麦克风勾选
let manager= abilityAccessCtrl.createAtManager()
await manager.requestPermissionsFromUser(this.context,['ohos.permission.MICROPHONE'])

}
需要创建一个manager,manager中有个获取权限的函数,参数的context,一个是你需要获取的麦克风权限。至于为什么异步。是获取权限的函数是需要等待的返回值是Promis看见这种返回值的都是需要等待的,如果不想写await 函数名前加async也可以(.then)然后写回调函数,就是请求后返回一个结果,至于你怎么处理根据你的需求来。至少这一点和unity的开发相关性不大,一般是在task任务需要异步等待,前面的代码是第一步,至于为什么是第一步,上边代码有注释。就是你必须需要,真机上不知道可不可以,但是模拟器上是需要这么操作,如果一开始使用者禁用了app的权限申请,那么在使用权限的地方再次申请也可以。
第二步:
先上代码:
async checkViocePermission() {
let manager = abilityAccessCtrl.createAtManager()
//这里不能直接请求是因为需要在应用里跳转到设置去请求打开应用的权限
//manager.requestPermissionsFromUser()
//获取应用信息
let bundleinfo = bundleManager.getBundleInfoForSelfSync(bundleManager.BundleFlag.GET_BUNDLE_INFO_WITH_APPLICATION)
//检测当前这个应用有没有获取到麦克风授权
let status = manager.checkAccessTokenSync(bundleinfo.appInfo.accessTokenId, ‘ohos.permission.MICROPHONE’)

if (status === abilityAccessCtrl.GrantStatus.PERMISSION_GRANTED) {//如果授予了this.showVioceCom = true
} else {//如果没授予跳转到设置应用 把当前的app信息传过去,然后去授予权限let UIAbilityContext = getContext() as common.UIAbilityContextlet want:Want={bundleName:'com.huawei.hmos.settings',abilityName:'com.huawei.hmos.settings.MainAbility',uri:'application_info_entry',parameters:{pushParams:bundleinfo.name}}
await  UIAbilityContext.startAbility(want)
}
代码解释是这样的:至于这段代码为什么没有直接申请
//这里不能直接请求是因为需要在应用里跳转到设置去请求打开应用的权限
//manager.requestPermissionsFromUser()
在模拟器中调用是是没反应的,就是说这个页面中去申请权限这么写是不行,不能像在EntryAbility中去使用,必须使用其他的办法。
就是上述代码中,你先去获取到应用的信息就是这个bundleinfo。我的理解是所有的应用,包括鸿蒙系统的应用都被管理就是这个bundleManager在管理,他有个函数就是获取包的信息getBundleInfoForSelfSync,参数是BundleFlag,是个枚举,有很多选择,这里就不一一介绍了

*用于获取包含 applicationInfo 的 bundleInfo。获取的 bundleInfo 不会

  • 包含 signatureInfo、hapModuleInfo、ability、extensionAbility 和 permission 等信息。
  • 获取到应用信息后,需要根本manager去检测你这个app有没有获取到你需要的权限,本章是获取的麦克风权限
  • let status = manager.checkAccessTokenSync(bundleinfo.appInfo.accessTokenId, ‘ohos.permission.MICROPHONE’)
  • 返回一个abilityAccessCtrl.GrantStatus的枚举,判断一下呗,如果PERMISSION_GRANTED就是获取了,然后你可以做你想要的事情,
  • 反之就是没授权,没有授权就跳到设置的Ability然后把你当前的需要授权的app信息传过去就可以去授权。
  • //如果没授予跳转到设置应用 把当前的wechat信息传过去,然后去授予权限
    let UIAbilityContext = getContext() as common.UIAbilityContext
    let want:Want={bundleName:‘com.huawei.hmos.settings’,
    abilityName:‘com.huawei.hmos.settings.MainAbility’,
    uri:‘application_info_entry’,
    parameters:{pushParams:bundleinfo.name}
    }
    await UIAbilityContext.startAbility(want)
    完整的截图看一下在这里插入图片描述
    如果一开始选择允许,那么以后不会再出现权限获取的弹窗了,如果禁止,那么在打开页面后,在你需要获取的地方需要获取权限在这里插入图片描述
    如果一开始没有再entryability中获取,是不会有麦克风的选择的,至少模拟器是这样。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/1553350.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

netty之NettyServer字符串解码器

前言 在实际开发中,server端接收数据后我们希望他是一个字符串或者是一个对象类型,而不是字节码,那么; 在netty中是否可以自动的把接收的Bytebuf数据转String,不需要我手动处理? 答;有&#xff…

OpenGL ES MVP/变换投影矩阵(8)

OpenGL ES MVP/变换投影矩阵(8) 简述 通过前面几节的学习,目前我们已经可以渲染自己想要的图像,也可以通过纹理加载图片进行渲染。接下来我们来学习一下MVP,这里的MVP不是Android应用开发里的框架MVP,而是Model,View…

TCP/UDP初识

TCP是面向连接的、可靠的、基于字节流的传输层协议。 面向连接:一定是一对一连接,不能像 UDP 协议可以一个主机同时向多个主机发送消息 可靠的:无论的网络链路中出现了怎样的链路变化,TCP 都可以保证一个报文一定能够到达接收端…

鸿蒙harmonyos next flutter混合开发之开发package

​​​​​​ 创建 package flutter create --templatepackage mypackage package代码如下: 创建hello_world.dart ///HelloWorld返回hello world 拼接param class HelloWorld {String helloWorld(String param) > "hello world ${param}"…

Java的学习(语法相关)

字符串存储的问题 char 和字符串都是字符的集合,它们之间的确有相似性,但在 Java 中它们有着不同的存储机制和处理方式。让我从 char 和 String 的本质区别入手来解释。 1. char 和 String 的区别 char 是基本类型:char 是 Java 中的基本数据…

现在别买理想L7/L8,问界M8要来暴揍友商了

文 | AUTO芯球 作者 | 雷慢 问界又一重磅炸弹要来了, 它就是问界M8, 来看,M8刚又曝光了大量谍照。 现在我打听的消息是这样的, 11月广州车展亮相预售, 12月底正式上市,25年春节前后开始交付&#xff…

TS(type,属性修饰符,抽象类,interface)一次性全部总结

目录 1.type 1.基本用法 2.联合类型 3.交叉类型 2.属性修饰符 1.public 属性修饰符 属性的简写形式 2.proteced 属性修饰符 3.private 属性修饰符 4.readonly 属性修饰符 3.抽象类 4.interface 1.定义类结构 2.定义对象结构 3.定义函数结构 4.接口之间的继…

客厅落地台灯怎么摆放?五款客厅落地台灯款式分享

客厅落地台灯怎么摆放?客厅落地台灯是提升光线环境在室内光线质量的关键设备。但如果不慎购买到低质量的客厅落地台灯,可能会导致光线效果不佳,进而影响视力健康。因此,挑选一个可靠的品牌至关重要。那么,客厅落地台灯…

数据治理006-数据标准的管理

元数据的分类和标准有哪些? 一、元数据的分类 元数据可以根据其描述的对象和属性不同,被分为不同的类型。以下是几种常见的元数据分类方法: 基于数据的类型:根据数据的类型,元数据可以被分为结构化元数据、非结构化元…

软件测试——Python和UnitTest框架

文章目录 一、软件测试1.测试计划和测试方案1.测试计划(管理类型文档)2.测试方案(技术型文档) 2.非功能测试设计3.测试报告1.核心内容 4.处理测试过程中出现不可复现的bug 二、Python1.常用语法1.切片2.字符串查找方法:find()3.字符串替换方法:replace()…

构建应用层(TCP)自定义协议:深入理解序列化与反序列化技术

🍑个人主页:Jupiter. 🚀 所属专栏:Linux从入门到进阶 欢迎大家点赞收藏评论😊 目录 网络版计算器序列化 和 反序列化重新理解 read、write、recv、send 和 tcp 为什么支持全双工自定义协议期望的报文格式 模板方法模式…

开源大数据框架-Ambari+Bigtop如何写metainfo.xml文件

1.如何一键编译?一键安装?你没看错。 👉👉👉 https://gitee.com/tt-bigdata/ambari-env 你以为跟你闹着玩?人狠话不多🙍‍♂️🙍‍♂️🙍‍♂️,直接上图&a…

国庆普及模拟2总结

目录 题目链接: 官方题解: 概述: 总结反思: 题目 T1: 题目分析: 错误代码: 错因: AC代码: T2: 题目分析: 赛时代码&#xf…

Centos Stream 9备份与恢复、实体小主机安装PVE系统、PVE安装Centos Stream 9

最近折腾小主机,搭建项目环境,记录相关步骤 数据无价,丢失难复 1. Centos Stream 9备份与恢复 1.1 系统备份 root权限用户执行进入根目录: cd /第一种方式备份命令: tar cvpzf backup.tgz / --exclude/proc --exclu…

CSS基础-常见属性

6、CSS三大特性 6.1 层叠性 如果样式发生冲突,则按照优先级进行覆盖。 6.2 继承性 元素自动继承其父元素、祖先元素所设置的某些元素,优先继承较近的元素。 6.3 优先级 6.3.1 简单分级 1、内联样式2、ID选择器3、类选择器/属性选择器4、标签名选择器/…

若无向图G(V,E)中含7个顶点,为保证图G在任何情况下都是连通的,则需要的边数最少是多少?

这乍一看是不是可抽象(迷糊)了,butttt待我小翻译一下。 先举少一点的例子,假如我们有三个点,我给你两条边,那是不是不管咋连都一定一定是连通的。 那我们再进一步,假如四个点呢?我给…

大厂进阶之CSS死磕牢记的7大知识点

本文主要讨论7大CSS知识点,个个都是金刚附体,干货满满: 1、移动端样式适配 2、回流和重绘 3、flex布局 4、BFC 5、CSS垂直居中方法 6、CSS两栏、三栏自适应布局 7、CSS单行、多行文本溢出省略号格式 一、如何做到移动端样式适配 1、媒体查询…

CloudCompare插件编写

预置环境:Windows10GitCMake3.23.3VS2019Qt5.14.2 编译CloudCompare工程 首先克隆CloudCompare工程,注意必须加上--recursive否则无法下载完整代码编译会失败: git clone --recursive https://github.com/CloudCompare/CloudCompare.git这…

鸢尾花书实践和知识记录[编程1-11二维和三维可视化]

作者空间 文章目录 思维导图函数使用 二维可视化方案平面散点图散点图的示例代码1:绘制鸢尾花的散点图代码2Plotly绘制散点图 数据类型和绘图工具的对应 平面等高线代码3生成等高线网格数据 plotly.express关键的绘图函数 Plotly的另一个模块代码4 Plotly生成的 热图…

李宏毅深度学习-梯度下降和Normalization归一化

Gradient Descent梯度下降 ▽ -> 梯度gradient -> vector向量 -> 下图中的红色箭头(loss等高线的法线方向) Tip1: Tuning your learning rates Adaptive Learning Rates自适应 通常lr会越来越小 Adaptive Learning Rates中每个参数都给它不同…