侵权投诉

鸿蒙APP开发鸿蒙权限请求框架

HarmonyOS技术社区 2021-09-28 09:19 次阅读

关于 HarmonyOS 的动态授权的常规操作流程和代码我之前写过一篇文章:《鸿蒙动态权限申请完整规范流程和操作详解》。

文章地址如下:

https://harmonyos.51cto.com/posts/5165

权限控制是在进行 HarmonyOS 应用开发中非常重要的一个环节,几乎所有的商业应用中都会涉及到。

我们在曾经使用的 Android app 应用中经常会遇到一些 app 会弹出各种敏感权限授权窗口提示用户授权。

有些 app(特别是流氓应用)经常会在第一次打开 app 的时候就提醒用户授予所有需要的权限。

甚至一些权限跟 app 功能根本不相关(比如读取通讯录等),如果不授权则直接不让你使用该 app,我遇到这类流氓应用一般果断卸载。

而真正的开发过程中我们在权限申请的时候一般要遵循以下 3 个原则:

最小权限集,即应用中确实需要的权限才进行申请。

需要用到 XX 权限时才进行申请,即并不是 app 开始的时候一次性申请所有权限,而是需要用到 XX 特定功能必须要授权才能使用的时候(比如调用照相机),这个时候才申请该特定权限。

未获取用户授权的话依然能使用应用大部分功能,只是必须授权的功能无法使用。

下面我针对敏感权限申请更好的复用,编写了一个第三方开源组件,取名为 XdwPermissionsLib。

具体项目源码请见:

https://gitee.com/xdw1019/XdwPermissionsLib

XdwPermissionsLib 介绍

鸿蒙权限请求框架,提供一个符合正规权限调用流程的框架并基于链式调用(这里简称 strong 模式),同时提供一个并不推荐使用的简单权限框架(简称 lazy 模式)。

strong 模式:正式项目推荐使用该模式。正规权限处理流程,用户需要检验权限并且处理校验结果的回调。

lazy 模式:该模式下开发者几乎不用去编写请求权限的代码,特别是不处理回调。

该模式不推荐在正式项目中使用,可以用于平时编写某些 demo 又不想处理权限的场景下。

当然有些 app 不在乎用户体验,只要不授权就不让使用的情况可以使用该模式。

动态申请权限流程图如下:

使用说明

①Strong 模式

引用:

方式一:通过 mylibrary 模块生成 har 包,添加 har 包到 libs 文件夹内

方式二:maven 引入(待后续上传到 maven 中心仓库再支持)

定义权限组,比如:

//定义需要动态申请的权限组,可以是一个或多个权限。这里的权限还必须要在config.json中进行配置

private String[] permissions = {

// 存储权限

SystemPermission.WRITE_USER_STORAGE,

// 相机权限

SystemPermission.CAMERA

};

在需要触发权限申请的地方调用如下代码:

//开始动态申请权限,链式调用。//实际开发中申请权限的动作应该放到需要用到该权限的操作中触发,比如点击某个按钮调起相机 StrongPermissionsUtils.getInstance(this).checkPermissions(this,permissions).setPermissionStateListener(new StrongPermissionsUtils.PermissionStateListener() {

@Override

public void onPermissionGranted() {

//授权成功之后的回调

//此处根据自己的实际业务编写业务逻辑,此处用toast进行演示

ToastUtil.toast(getContext(),“授权成功”);

}

@Override

public void onPermissionDenied(boolean isDisabledPrompt) {

//授权拒绝之后的回调

//此处根据自己的实际业务编写业务逻辑,此处用toast进行演示

if(isDisabledPrompt){

ToastUtil.toast(getContext(),“您之前拒绝了授权并且禁止系统再提示,需要手动进入系统设置页面开启”);

}else{

ToastUtil.toast(getContext(),“您拒绝了授权”);

}

}

});

在当前的 ability 重写 onRequestPermissionsFromUserResult 方法,代码如下:

@Overridepublic void onRequestPermissionsFromUserResult(int requestCode, String[] permissions, int[] grantResults) {

super.onRequestPermissionsFromUserResult(requestCode, permissions, grantResults);

//鉴权之后的回调,必须调用

StrongPermissionsUtils.getInstance(this).onRequestPermissionsResult(requestCode, permissions, grantResults);

}

②Lazy 模式

引用:

方式一:通过 mylibrary 模块生成 har 包,添加 har 包到 libs 文件夹内

方式二:maven 引入(待后续上传到 maven 中心仓库再支持)

将需要调用的 Ability 继承 LazyPermissionAblity,如下:

public class MainAbility extends LazyPermissionAblity {

在当前 Ability 中定义权限组,并且在 onStart 方法的第一行调用 setPermissions 方法。

代码如下:

public class MainAbility extends LazyPermissionAblity {

//定义需要动态申请的权限组,可以是一个或多个权限。这里的权限还必须要在config.json中进行配置

private String[] permissions = {

// 存储权限

SystemPermission.WRITE_USER_STORAGE,

// 相机权限

SystemPermission.CAMERA

};

@Override

public void onStart(Intent intent) {

//lazy模式下,setPermissions的代码调用必须放在onStart的第一行

super.setPermissions(permissions);

super.onStart(intent);

super.setMainRoute(MainAbilitySlice.class.getName());

}

}

工程结构说明

工程中总共有三个 module,分别为:

mylibrary:自定义的第三方权限库,供外部项目调用。

entry:用来演示 mylibrary 库中 strong 模式下的权限调用。

LazySample:用来演示 mylibrary 库中 lazy 模式下的权限调用。

责任编辑:haq

原文标题:鸿蒙APP开发:权限控制详解!

文章出处:【微信号:gh_834c4b3d87fe,微信公众号:HarmonyOS技术社区】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
分享:

评论

相关推荐

HDF驱动加载问题

源码版本:3.0LTS下 开发板:HI3516 编译系统:小型系统 描述: 按照驱动开发的指导编写驱动,可以正常编译进去,但是没...
发表于 10-18 17:25 101次 阅读

字节跳动推出自主研发的BVC1S编解码器

近日,字节跳动公司宣布正式推出自主研发的关于屏幕内容视频编解码器BVC1S,编码速度在远程办公、云游....
的头像 lhl545545 发表于 10-18 11:44 195次 阅读

武汉大学发布全球首款基于RISC-V高精度室内定位音频芯片

近日武汉大学发布了全球首款基于RISC-V高精度室内定位音频芯片,首次突破了卫星信号精准测距等三大技....
的头像 lhl545545 发表于 10-18 10:58 377次 阅读

HarmonyOS卡片开发-基础信息概述与配置

一.基本概念原子化服务中每个便捷服务应有独立的图标、名称、描述、快照,这些称为便捷服务基础信息。基础信息应能够准确反映便...
发表于 10-18 10:22 101次 阅读
HarmonyOS卡片开发-基础信息概述与配置

华为P20系列将支持最新HarmonyOS系统

HarmonyOS官方宣布华为P20系列将享受最新的HarmonyOS升级,升级HarmonyOS ....
的头像 lhl545545 发表于 10-18 09:59 431次 阅读

HarmonyOS服务卡片开发-资源访问学习

卡片工程可以访问的资源,包括JS模块的resources资源,应用resources资源(所有JS模块共享)和系统预置资源。资源限定词资源...
发表于 10-15 11:35 505次 阅读

远程开关定时器应该如何接线

远程开关定时器:4G网络信号,远程控制不限距离,无需下载APP,手机小程序实现远距离对开关的控制,网....
发表于 10-14 16:20 45次 阅读

鸿蒙系统到底有多少“差评”?虽然很难听,但是很真实

HarmonyOS 2.0HarmonyOS 2.0是华为技术有限公司于20年9月在华为开发者大会上发布的操作系统,适用于部分手机、车机、智能电...
发表于 10-14 16:10 297次 阅读

iPhone13的劲敌,华为Mate50卖点不止鸿蒙系统,但有一个小遗憾

受到一些众所周知的因素影响,手机业务发展受限的华为,目前在全球手机市场中份额直线下滑。从华为的新机发布情况来看,按照以往...
发表于 10-14 11:24 404次 阅读
iPhone13的劲敌,华为Mate50卖点不止鸿蒙系统,但有一个小遗憾

HarmonyOS服务卡片开发-文件组织与配置学习

1. 文件组织 目录结构 JS服务卡片(entry/src/main/js/Component)的典型开发目录结构如下: 目录结构中文件分类如下: ....
发表于 10-14 10:19 277次 阅读

设计基于STM32+机智云的手机APP点灯遇到哪些问题

设计基于STM32+机智云的手机APP点灯遇到哪些问题?怎样去解决?...
发表于 10-14 07:55 0次 阅读

HarmonyOS服务卡片开发-HML语法学习

HML(HarmonyOS Markup Language)是一套类HTML的标记语言,通过组件,事件构建出页面的内容。页面具备数据绑定、事...
发表于 10-13 10:48 16次 阅读

HarmonyOS的组件化设计方案

HarmonyOS是一款面向万物互联时代的、全新的分布式操作系统。在传统的单设备系统能力基础上,Ha....
的头像 HarmonyOS开发者 发表于 10-13 09:59 184次 阅读

基于HarmonyOS的黑白翻棋手机版本

前言 之前发过两篇黑白翻棋游戏的手表版本,这次给大家带来的小分享是黑白翻棋的手机版本,也是JS写的,....
的头像 HarmonyOS官方合作社区 发表于 10-13 09:38 142次 阅读

鸿蒙OS 3.0马上就要来了

花粉们都用上鸿蒙系统了吗?据统计,目前鸿蒙OS 2.0升级用户数突破1.2亿,平均每天超100万用户....
的头像 HarmonyOS官方合作社区 发表于 10-13 09:33 735次 阅读

我摊牌了:13香并不香!我最终还是选择了国产华为P50

​苹果13和华为p50是现在最欢迎的两款手机,不管是手机颜值还是提供带来的手机网络性能体验来说,都是不错的一个选择。 ​虽然说...
发表于 10-12 17:28 669次 阅读

苹果即将推出App隐私报告功能

 苹果公司宣布称即将推出苹果App隐私的报告功能,最新App隐私报告功能可以展示各app访问位置方便....
的头像 lhl545545 发表于 10-12 17:18 391次 阅读

openharmony 应用为什么不能在harmonyos 真机上也harmonyos 虚拟机上运行?

场景:基于openharmony 开发一款产品(假设为手机终端),一个应用开发商为该手机开发一款 openharmony 应用,难道这个应用不能在...
发表于 10-12 16:50 335次 阅读

网传华为手机首发的高通骁龙898是一次无奈的回归

电子发烧友网报道(文/黄山明)自从华为被美国四轮制裁以后,消费者业务在这几年的情况都不容乐观,尤其是....
的头像 电子发烧友网 发表于 10-12 16:49 472次 阅读

小米“亲情守护”功能将于本月底下线

  小米集团公司近日发布公告称小米“亲情守护”功能将于本月底正式下线,小米回应称停止服务后小米“亲情....
的头像 lhl545545 发表于 10-12 15:46 581次 阅读

鸿蒙的网络管理功能你们知道有多厉害吗

  本示例演示了如何使用网络管理模块相关接口,演示了以下功能: 功能 1: 使用默认网络,打开连接,....
的头像 HarmonyOS技术社区 发表于 10-11 14:26 267次 阅读
鸿蒙的网络管理功能你们知道有多厉害吗

HarmonyOS微博第三方登录实现(内附代码)

  前期准备 在微博开放平台注册一个网站应用,微博开放平台地址如下: https: //open.w....
的头像 HarmonyOS技术社区 发表于 10-11 14:21 209次 阅读

鸿蒙开发中怎么引入第三方库

Android 发展到现在不仅提供了很多 API,还提供了很多第三方库。这降低了我们开发者的开发难度....
的头像 HarmonyOS技术社区 发表于 10-11 14:11 202次 阅读

华为mate40pro价格官网报价

近日,华为mate40pro的官网售价从6099元降到了5349元,性价比还是挺高的。华为mate4....
的头像 lhl545545 发表于 10-09 17:53 2777次 阅读

HarmonyOS系统TextField组件基本用法

1. TextField组件基本用法 组件说明: 是Text的子类,用来进行用户输入数据的 常见属性....
的头像 电子发烧友论坛 发表于 10-09 09:18 228次 阅读
HarmonyOS系统TextField组件基本用法

智慧城市市场属于芯片供应真空期

很多玩直播的人、或是看直播可能会有切身的体会。咱们在看直播的时候,如果是视频效果稍有不佳,就会有着随....
的头像 电子发烧友网 发表于 10-08 10:43 272次 阅读

华为打造融合DOICT技术打造工业级5G网络底座

华为公网专用5GtoB解决方案已经服务了20多个行业的3000多个项目,在夯实网络当前应用场景,实现....
的头像 华为云核心网 发表于 10-08 09:15 1064次 阅读

官宣:Wearfit PRO新功能,全新发现页上线!

9月30日,微克科技旗下「Wearfit PRO」APP应用发布重磅升级,全新发现页功能上线,为用户....
发表于 09-30 17:38 68次 阅读
官宣:Wearfit PRO新功能,全新发现页上线!

开思APP中的智能接车神器为什么大受汽修门店的欢迎?

近年来,随着经济的稳步发展,我国汽车保有量已形成规模,并逐年增加。庞大的汽车保有量为汽车后市场的蓬勃....
的头像 话说科技 发表于 09-30 11:45 225次 阅读
开思APP中的智能接车神器为什么大受汽修门店的欢迎?

继绿光浏览器、Tuber浏览器后,小编又发现一款神级APP

现如今最受年轻人喜欢的莫过于浏览软件,随意的打开手机都可以看到琳琅满目的APP。都2021年了,一款....
发表于 09-30 11:22 678次 阅读
继绿光浏览器、Tuber浏览器后,小编又发现一款神级APP

莱享汇社区互联平台为打造供需对等模式,开启完美消费主义

在国内经济的转型升级期,供应端和需求端不匹配的现象广泛存在,一方面商家苦于店面的客源少,另一方面众多....
的头像 话说科技 发表于 09-29 17:19 337次 阅读

华为nova9系列新机发布

华为公司近日对外正式发布nova9系列新款智能手机,nova9系列采用骁龙778G芯片,外观方面超轻....
的头像 lhl545545 发表于 09-28 15:10 504次 阅读

HarmonyOS如何自动生成JS FA调用Java PA的模板代码

JS UI框架提供了JS FA(Feature Ability)调用Java PA(Particle....
的头像 HarmonyOS开发者 发表于 09-28 10:09 329次 阅读

JavaUI框架新增组件开发指南

Java UI框架是HarmonyOS应用开发中诸多开发者需要关注的重要内容。近期,文档君结合各位开....
的头像 HarmonyOS开发者 发表于 09-28 10:04 404次 阅读
JavaUI框架新增组件开发指南

如何对OpenHarmony贡献代码

OpenHarmony 是由开放原子开源基金会(OpenAtom Foundation)孵化及运营的....
的头像 HarmonyOS技术社区 发表于 09-28 09:58 304次 阅读
如何对OpenHarmony贡献代码

在鸿蒙上使用Python进行物联网编程

在上一篇帖子《使用 Python 开发鸿蒙设备程序(1-GPIO 外设控制)》中,已经成功的使用 P....
的头像 HarmonyOS技术社区 发表于 09-28 09:55 459次 阅读
在鸿蒙上使用Python进行物联网编程

鸿蒙系统中线程管理的使用

不同应用在各自独立的进程中运行。当应用以任何形式启动时,系统为其创建进程,该进程将持续运行。当进程完....
的头像 HarmonyOS技术社区 发表于 09-28 09:49 231次 阅读
鸿蒙系统中线程管理的使用

在鸿蒙中如何实现一屏多页

众所周知,PageSlider 是用于页面之间切换的组件,它通过响应滑动事件完成页面间的切换,而 P....
的头像 HarmonyOS技术社区 发表于 09-28 09:46 285次 阅读

OpenHarmony3.0上编译C控制Hi3516开发板的LED闪烁

OpenHarmony 分为轻量系统、小型系统、标准系统,目前对应 LiteOS-M、LiteOS-....
的头像 HarmonyOS技术社区 发表于 09-28 09:42 678次 阅读
OpenHarmony3.0上编译C控制Hi3516开发板的LED闪烁

HarmonyOS与OpenHarmony开发角度上的区别

开篇第一句,所有学习与开发资料以官方资料为准。任何博客类只能作为参考,自行判断优良,不要被误导,包括....
的头像 HarmonyOS技术社区 发表于 09-28 09:31 547次 阅读
HarmonyOS与OpenHarmony开发角度上的区别

自制鸿蒙Neptune开发板实时更新温湿度到手机

好久不见!最近在研究 OpenHarmony,经过一番折腾,终于打通了南向和北向开发。 如下: 自己....
的头像 HarmonyOS技术社区 发表于 09-28 09:26 478次 阅读
自制鸿蒙Neptune开发板实时更新温湿度到手机

阿里旗下多个App已接入微信支付

  近日,根据媒体的报道消息称阿里巴巴旗下多个App 目前已经正式接入微信支付,闲鱼、盒马等公司也正....
的头像 lhl545545 发表于 09-28 09:25 2097次 阅读

用Python完成鸿蒙开发板外设控制

话说很久以前,我将 MicroPython 的解释器给“挖”了出来,然后做了适配,成功运行于鸿蒙设备....
的头像 HarmonyOS技术社区 发表于 09-28 09:22 327次 阅读

在HarmonyOS点亮LED步骤

Hi3861 模组的介绍 ①外观和基本功能 Hi3861 开发板模组大小约 2cm*5cm,是一款高....
的头像 HarmonyOS技术社区 发表于 09-28 09:16 1099次 阅读
在HarmonyOS点亮LED步骤

芯海科技赋能众多头部品牌率先进入鸿蒙智联生态

作为华为生态合作伙伴,芯海科技从早期的HiLink到最新的HarmonyOS Connect,为终端....
的头像 鸿蒙系统HarmonyOS 发表于 09-27 09:40 2738次 阅读
芯海科技赋能众多头部品牌率先进入鸿蒙智联生态

未来已来,万物互联丨倍益康携筋膜枪HI首秀登场!

2021年5月,华为宣布将“Works With HUAWEI HiLink”和“Powered b....
的头像 科讯视点 发表于 09-26 16:10 588次 阅读
未来已来,万物互联丨倍益康携筋膜枪HI首秀登场!

app安全验证

app安全验证
发表于 09-26 11:47 36次 阅读

华为欧拉os系统是家用的吗

华为欧拉os系统可以家用,华为欧拉os操作系统是基于Linux开发的,它融入了华为对于服务器场景的很....
的头像 lhl545545 发表于 09-26 10:39 3403次 阅读

指标监控体系如何建设

对于数据人尤其是数据产品和分析师,最难排查(头疼)的问题就是指标为什么升/降/没数,一旦业务方提出这....
的头像 数据分析与开发 发表于 09-26 10:39 227次 阅读
指标监控体系如何建设

华为欧拉系统和鸿蒙系统的区别

华为公司全新操作系统openEuler欧拉系统明天(9月25日)即将正式发布,华为此前就已经发布了鸿....
的头像 lhl545545 发表于 09-24 16:56 7829次 阅读

如何快速将BootLoader与APP固件合并

1、前言嵌入式固件一般分为BootLoader和App,BootLoader用于启动校验、App升级....
的头像 嵌入式ARM 发表于 09-24 14:19 310次 阅读

数据分析过程中几个可能常见的陷阱

前言 很多的数据分析人员往往太过于去关注数据或者分析方法论等,尤其是对于刚入门的,在解读数据过程中,....
的头像 数据分析与开发 发表于 09-23 16:26 230次 阅读

HarmonyOS 荣获两项红点设计大奖

在近日揭晓的2021红点设计大奖(RedDot Award)中,HarmonyOS 设计系统,以及H....
的头像 HarmonyOS 发表于 09-23 09:44 360次 阅读

鸿蒙与产业数字化就像天然匹配的钥匙和锁 矿山中的鸿蒙花开

几个月以来,鸿蒙OS已经从一种期待,变成了我们生活中的一部分。 9月13日,华为消费者业务 CEO余....
的头像 脑极体 发表于 09-23 09:38 2302次 阅读

智能电网占营收九成!力合微大力拓展非电网市场,已支持华为鸿蒙系统

电子发烧友网(文/莫婷婷)随着AI、5G等新技术的兴起,我国电网朝着的信息化、自动化、智能化的方向升....
的头像 Monika观察 发表于 09-22 06:43 2778次 阅读
智能电网占营收九成!力合微大力拓展非电网市场,已支持华为鸿蒙系统