华为应用权限初次申请及二次申请

应用权限概述

系统提供了一种允许应用访问系统资源(如:通讯录等)和系统能力(如:访问摄像头、麦克风等)的通用权限访问方式,来保护系统数据(包括用户个人数据)或功能,避免它们被不当或恶意使用。

应用申请敏感权限时,必须填写权限使用理由字段,敏感权限通常是指与用户隐私密切相关的权限,包括地理位置、相机、麦克风、日历、健身运动、身体传感器、音乐、文件、图片视频等权限。参考向用户申请授权。

system_grant
在配置文件中,声明应用需要请求的权限后,系统会在安装应用时自动为其进行权限预授予,开发者不需要做其他操作即可使用权限。

user_grant

  • 在配置文件中,声明应用需要请求的权限,且要设置需要使用的场景+使用原因
    调用 requestPermissionsFromUser() 方法后,应用程序将等待用户授权的结果。如果用户授权,则可以继续访问目标操作。如果用户拒绝授权,则需要提示用户必须授权才能访问当前页面的功能,并引导用户到系统应用“设置”中打开相应的权限。可参考二次向用户申请权限 requestPermissionOnSetting() 。

申请权限

首先,在entry/src/main/module.json文件中配置需要申请的权限。
在这里插入图片描述
abilities 同级添加 requestPermissions 字段,并在里面配置权限字段。在这里插入图片描述
在这里插入图片描述
权限描述字段在 main/resources/base/element/string.json 中配置

在这里插入图片描述
可以直接填写,也可以点击Open editor进行 配置
在这里插入图片描述
在这里插入图片描述
至此,基础配置已完成。

封装Permission工具

封装权限工具,提供请求用户权限,拉起用户权限设置的能力。

import { abilityAccessCtrl, Permissions } from '@kit.AbilityKit';class Permission {// 请求用户授权async requestPermissions(permissions: Permissions[]) {const atManager = abilityAccessCtrl.createAtManager()const ctx = AppStorage.get<Context>('context')if (ctx) {const result = await atManager.requestPermissionsFromUser(ctx, permissions)return result.authResults.every(result => result === abilityAccessCtrl.GrantStatus.PERMISSION_GRANTED)}return false}// 拉起二次弹窗半模态async openPermissionSetting(permissions: Permissions[]) {const atManager = abilityAccessCtrl.createAtManager()const ctx = AppStorage.get<Context>('context')if (ctx) {const authResults = await atManager.requestPermissionOnSetting(ctx, permissions)return authResults.every(result => result === abilityAccessCtrl.GrantStatus.PERMISSION_GRANTED)}return false}
}export const permission = new Permission()

之后在需要申请权限的页面进行权限判定。

async aboutToAppear() {// 1. 打开授权对话框// 2.1 授权,啥也不用干// 2.2 禁用,弹出一个对话框,提示用户授权,离开(返回上一个页面)去授权(去应用设置页面)try {//获取应用获取麦克风权限的结果const flag = await permission.requestPermissions(['ohos.permission.MICROPHONE'])//如果没有权限if (!flag) {//自定义弹窗,提醒用户const dialogResult = await promptAction.showDialog({title: '温馨提示',message: '未授权使用麦克风将无法使用该面试录音功能,是否前往设置进行授权?',buttons: [{ text: '离开', color: $r('app.color.common_gray_01') },{ text: '去授权', color: $r('app.color.black') }],})//点击“离开”,返回上一个页面if (dialogResult.index === 0) {router.back()} else if (dialogResult.index === 1) {//点击授权,跳转至设置页const want: Want = {bundleName: 'com.huawei.hmos.settings',abilityName: 'com.huawei.hmos.settings.MainAbility',uri: 'application_info_entry',parameters: {// 修改成你的应用包名,跳转到该应用的设置页面pushParams: '修改成你的应用包名'}}const uiContext = getContext(this) as common.UIAbilityContextuiContext.startAbility(want)}}} catch (e) {router.back()}}

总结

如果是 HarmonyOS NEXT Developer Beta3(2024-09-12) 及以上版本,可以在本应用直接拉起二次授权的半模态弹窗,但如果是之前的版本,则需要跳转至设置页进行手动授权。

二次申请的半模态弹窗
在这里插入图片描述
跳转至授权页的弹窗提醒
在这里插入图片描述

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

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

相关文章

俄罗斯方块——C语言实践(Dev-Cpp)

目录 1、创建项目(尽量不使用中文路径) 2、项目复制 3、项目配置 ​1、调整编译器 2、在配置窗口选择参数标签 3、添加头文件路径和库文件路径 4、代码实现 4.1、main.c 4.2、draw.h 4.3、draw.c 4.4、shape.h 4.5、shape.c 4.6、board.h 4.7、board.c 4.8、cont…

Linux文件系统(下)

目录 前言 0.文件的长期存储 1.磁盘如何定位一个扇区 2.虚拟到物理映射 3.分区、分组与inode 4.软硬链接与文件访问 前言 在博主的【Linux文件系统(上)】一文中介绍了有关文件系统在Linux操作系统平台上加载到内存中后是如何进行管理的&#xff0c;本文要介绍的是在磁盘中的文…

电脑上如何多开微信软件(多个微信同时使用)

想登录几个就下面这种文件里&#xff0c;复制几行即可&#xff1a; 创建的是以 .bat 文件结尾的txt文件&#xff08;先创建一个txt文本文档&#xff0c;等写好了命令保存后&#xff0c;再把文件的后缀名改为: .bat &#xff09;再保存即可。然后&#xff0c;右键以管理员运行&a…

【WRF工具】WRF Domain Wizard第一期:软件下载及安装

【WRF工具介绍】WRF Domain Wizard下载及安装 1 WRF Domain Wizard 的主要功能2 使用 WRF Domain Wizard 的步骤2.1 安装 WRF Domain Wizard&#xff1a;2.2 启动 WRF Domain Wizard&#xff1a;2.3 定义计算域&#xff1a;2.4 生成配置文件&#xff1a;2.5 运行 WPS 和 WRF&am…

多维时序 | Matlab基于BO-LSSVM贝叶斯优化最小二乘支持向量机数据多变量时间序列预测

多维时序 | Matlab基于BO-LSSVM贝叶斯优化最小二乘支持向量机数据多变量时间序列预测 目录 多维时序 | Matlab基于BO-LSSVM贝叶斯优化最小二乘支持向量机数据多变量时间序列预测效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.Matlab基于BO-LSSVM贝叶斯优化最小二乘支…

从ANN到SNN的转换:实现、原理及两种归一化方法【MINIST、实战】

从ANN到SNN的转换&#xff1a;实现、原理及两种归一化方法 引言 随着神经形态计算的迅猛发展&#xff0c;脉冲神经网络&#xff08;Spiking Neural Networks, SNNs&#xff09;作为一种仿生神经计算模型&#xff0c;逐渐展现出其在低功耗和事件驱动计算领域的巨大潜力。不同于…

苹果cms多语言插件,插件配置前端默认语言采集语言等

苹果CMS&#xff08;maccmscn&#xff09;是一款功能强大的内容管理系统&#xff0c;广泛应用于视频网站和其他内容发布平台。为了满足全球用户的需求&#xff0c;苹果CMS支持多语言插件&#xff0c;使得网站能够方便地提供多语言版本。以下是关于苹果CMS多语言插件的详细介绍&…

dubbo一

Dubbo 分布式系统的演进 SOA面向服务架构 NSA微服务架构 节点与网络 分片和冗余 分布式系统挑战 分布式系统特性与衡量标准 一致性理论 强一致性ACID CAP 弱一致性BASE 一致性算法 dubbo dubbo六大核心功能 API与SPI

一键生成中秋国风插画!FLUX中秋专属Lora的使用教程

如何在中秋节期间快速生成富有节日气氛的国风插画吗&#xff1f; 不需要复杂的设计技能&#xff0c;或者手绘功底。只需借助FLUX中秋专属Lora-中秋国风人物插画v1.0_FLUX&#xff0c; 就可以轻松实现一键生成精美插画&#xff0c;特别适合用于宣传海报、包装设计等场景。 这个…

gin集成jaeger中间件实现链路追踪

1. 背景 新业务线带来新项目启动&#xff0c;需要改进原有项目的基础框架和组件能力&#xff0c;以提升后续开发和维护效率。项目搭建主要包括技术选型、框架搭建、基础服务搭建等。这其中就涉及到链路追踪的内容&#xff0c;结合其中的踩坑情况&#xff0c;用一篇文章来说明完…

高通Liunx 系统镜像编译

本文将会介绍如何在编译高通Liunx代码, 具体可以在高通 Linux | 高通下查看相关信息。 编译服务器配置 首先&#xff0c;准备一台Ubuntu 22.04版本主机或者服务器 1&#xff0c;编译Yocto 系统&#xff0c;需要如下一些配置 sudo apt update sudo apt install repo gawk wg…

C++——STL(list类)

1.list的介绍 1. list是可以在常数范围内在任意位置进行插入和删除的序列式容器&#xff0c;并且该容器可以前后双向迭代。 2. list的底层是双向链表结构&#xff0c;双向链表中每个元素存储在互不相关的独立节点中&#xff0c;在节点中通过指针指向其前一个元素和后一个元素…

音视频入门基础:AAC专题(5)——FFmpeg源码中,判断某文件是否为AAC裸流文件的实现

一、引言 通过FFmpeg命令&#xff1a; ./ffmpeg -i XXX.aac 可以判断出某个文件是否为AAC裸流文件&#xff1a; 所以FFmpeg是怎样判断出某个文件是否为AAC裸流文件呢&#xff1f;它内部其实是通过adts_aac_probe函数来判断的。从《FFmpeg源码&#xff1a;av_probe_input_for…

TCP socket

TCP的socket和UDP大同小异&#xff0c;基本的代码结构都是相同的。一些相同的接口本文就不赘述了&#xff0c;例如&#xff0c;socket,bind&#xff0c;有需要看这篇文章UDP socket 服务端server 两步&#xff1a;初始化服务端&#xff0c;运行服务端 初始化服务端 创建soc…

物品识别——基于python语言

目录 1.物品识别 2.模型介绍 3.文件框架 4.代码示例 4.1 camera.py 4.2 interaction.py 4.3 object_detection.py 4.4 main.py 4.5 运行结果 5.总结 1.物品识别 该项目使用Python&#xff0c;OpenCV进行图像捕捉&#xff0c;进行物品识别。我们将使用YOLO&#xff08…

人工智能——猴子摘香蕉问题

一、实验目的 求解猴子摘香蕉问题&#xff0c;根据猴子不同的位置&#xff0c;求解猴子的移动范围&#xff0c;求解对应的过程&#xff0c;针对不同的目标状态进行求解。 二、实验内容 根据场景有猴子、箱子、香蕉&#xff0c;香蕉挂天花板上。定义多种谓词描述位置、状态等…

Vue生命周期;Vue路由配置;vue网络请求;vue跨域处理

一&#xff0c;Vue生命周期 <template><div > <h1 click"changeText">{{ info }}</h1></div> </template><script> export default {name: HelloWorld,data(){return{info:"介绍组件生命周期"}},methods:{chang…

CenterNet官方代码—目标检测模型推理部分

CenterNet模型推理部分解析 CenterNet官方代码环境部署 CenterNet作为2019年CVPR推出的论文&#xff0c;论文中给出了官方代码所在的github仓库地址。https://github.com/xingyizhou/CenterNet。 整个代码的代码量并不是特别大&#xff0c;但整个项目的难点在于使用了老版本的…

Djourney新手入门基础,AI摄影+AI设计+AI绘画-AIGC作图

人工智能技术的飞速发展&#xff0c;AI正逐渐渗透进创意领域&#xff0c;特别是在摄影、设计和绘画方面&#xff0c;AIGC&#xff08;Artificial Intelligence for Generative Content&#xff09;技术正在重塑我们的创作方式。本文将深入探讨Djourney这款创新工具&#xff0c;…

XML_Tomcat_HTTP

第四章 XML_Tomcat10_HTTP 一 XML XML是EXtensible Markup Language的缩写&#xff0c;翻译过来就是可扩展标记语言。所以很明显&#xff0c;XML和HTML一样都是标记语言&#xff0c;也就是说它们的基本语法都是标签。 可扩展 三个字表面上的意思是XML允许自定义格式。但这不代…