鸿蒙权限请求工具类

server/2024/12/19 8:47:52/

前言:鸿蒙权限请求也是必不可少的,安卓如果在清单文件中申请了,就可以手动打开权限,但是鸿蒙却有一丢丢不一样,权限管控的很严格,如果你的应用不符合一些权限申请的范围,就会被告知为高危权限申请,不能上架的,所以鸿蒙申请权限要看你的应用类型去申请相对应的权限。

一:在 entry 里面的 module.json 声明所需要申请的权限,在 requestPermissions 标签下声明:

二:以下是封装好的工具类

import { abilityAccessCtrl, bundleManager, common, Permissions } from '@kit.AbilityKit';class PermissionManager {// 检查是否授权checkPermissions(permissions: Permissions[]) {// ['ohos.permission.READ_CONTACTS', 'ohos.permission.WRITE_CONTACTS']// 程序访问控制管理const atManager = abilityAccessCtrl.createAtManager();const bundleInfo = bundleManager.getBundleInfoForSelfSync(bundleManager.BundleFlag.GET_BUNDLE_INFO_WITH_APPLICATION)// 提取 tokenID 标识const tokenID = bundleInfo.appInfo.accessTokenId;//检查是否已授权const grantStatusList = permissions.map(item => atManager.checkAccessTokenSync(tokenID, item))return grantStatusList.every(value => value === abilityAccessCtrl.GrantStatus.PERMISSION_GRANTED)}// 动态申请授权(首次弹窗申请)async requestPermissions(permissions: Permissions[]) {const atManager = abilityAccessCtrl.createAtManager()//弹起弹窗const permissionRequestResult = await atManager.requestPermissionsFromUser(getContext(), permissions)//检查权限的结果const res = permissionRequestResult.authResults.every(value => value === abilityAccessCtrl.GrantStatus.PERMISSION_GRANTED)return res === true ? Promise.resolve(true) : Promise.reject(false)}// 打开系统设置的权限管理页(处理授权结果)openPermissionSettingsPage() {const context = getContext() as common.UIAbilityContext// 获取包信息const bundleInfo = bundleManager.getBundleInfoForSelfSync(bundleManager.BundleFlag.GET_BUNDLE_INFO_WITH_APPLICATION)context.startAbility({bundleName: 'com.huawei.hmos.settings',abilityName: 'com.huawei.hmos.settings.MainAbility',uri: 'application_info_entry',parameters: {pushParams: bundleInfo.name}})}
}export const permissionManager = new PermissionManager()

http://www.ppmy.cn/server/151402.html

相关文章

HarmonyOS Next开发工具DevEco Studio介绍:ASan与TSan检测根治你的C++恐惧症

1、背景介绍 很多开发者面对C都很犯怵,其中主要的一块就是内存操作。不合理的内存操作,比如数组越界、内存泄露、释放已释放的地址,可能会引起程序性能问题:内存消耗大,卡顿,更严重的会导致程序出现崩溃。…

LoadBalancer负载均衡和Nginx负载均衡区别理解

LoadBalancer和Nginx都是用来做负载均衡用的,那二者有什么区别呢? Nginx服务器端的负载均衡: 所有请求都先发到nginx,然后再有nginx转发从而实现负载均衡。LoadBalancer是本地的负载均衡: 它是本地先在调用微服务接口…

使用 CFD 加强水资源管理:全面概述

探索 CFD(计算流体动力学)在增强保护人类健康的土木和水利工程实践方面的重大贡献。 挑战 水资源管理是指规划、开发、分配和管理水资源最佳利用的做法。它包括广泛的活动,旨在确保水得到有效和可持续的利用,以满足各种需求&…

深入探索Vue.js中的v-html指令:HTML内容绑定与安全渲染的核心机制

深入探索Vue.js中的v-html指令:HTML内容绑定与安全渲染的核心机制 引言 在Vue.js中,v-html指令是一个用于将HTML内容绑定到指定元素的指令。通过使用v-html指令,开发者可以将动态生成的HTML内容插入到页面中,从而实现更灵活和动…

C#.NET使用multipart/form-data方式上传文件及其他数据

请求发起 .NET Framework 3.5 版 /// <summary>/// 使用multipart/form-data方式上传文件及其他数据/// </summary>/// <param name"headers">请求头参数</param>/// <param name"nameValueCollection">键值对参数</pa…

moment()获取时间

moment 是一个 JavaScript 日期处理类库。 使用&#xff1a; //安装 moment npm install moment -- save引用 //在main.js中全局引入 import moment from "moment"设定moment区域为中国 //import 方式 import moment/locale/zh-cn moment.locale(zh-cn); 挂载全…

上传文件(vue3)

使用el-upload 先上传到文件服务器&#xff0c;生成url 然后点击确定按钮&#xff1a; 保存数据 <template><el-dialog top"48px" width"500" title"新增协议" :modelValue"visible" close"handleClose()">…

Group FLUX - User Usage Survey Report

文章目录 User Feedback Summary: Software Advantages and FeaturesUser Feedback Issues and Suggested Improvements1. Security Concerns:Improvement Measures: 2. System Performance and Loading Speed:Improvement Measures: 3. Data Display Issues:Improvement Measu…