99精品伊人亚洲|最近国产中文炮友|九草在线视频支援|AV网站大全最新|美女黄片免费观看|国产精品资源视频|精彩无码视频一区|91大神在线后入|伊人终合在线播放|久草综合久久中文

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

鴻蒙APP開(kāi)發(fā)鴻蒙權(quán)限請(qǐng)求框架

OpenHarmony技術(shù)社區(qū) ? 來(lái)源:鴻蒙技術(shù)社區(qū) ? 作者:軟通夏德旺 ? 2021-09-28 09:19 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

關(guān)于 HarmonyOS 的動(dòng)態(tài)授權(quán)的常規(guī)操作流程和代碼我之前寫(xiě)過(guò)一篇文章:《鴻蒙動(dòng)態(tài)權(quán)限申請(qǐng)完整規(guī)范流程和操作詳解》。

文章地址如下:

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

權(quán)限控制是在進(jìn)行 HarmonyOS 應(yīng)用開(kāi)發(fā)中非常重要的一個(gè)環(huán)節(jié),幾乎所有的商業(yè)應(yīng)用中都會(huì)涉及到。

我們?cè)谠?jīng)使用的 Android app 應(yīng)用中經(jīng)常會(huì)遇到一些 app 會(huì)彈出各種敏感權(quán)限授權(quán)窗口提示用戶(hù)授權(quán)。

有些 app(特別是流氓應(yīng)用)經(jīng)常會(huì)在第一次打開(kāi) app 的時(shí)候就提醒用戶(hù)授予所有需要的權(quán)限。

甚至一些權(quán)限跟 app 功能根本不相關(guān)(比如讀取通訊錄等),如果不授權(quán)則直接不讓你使用該 app,我遇到這類(lèi)流氓應(yīng)用一般果斷卸載。

而真正的開(kāi)發(fā)過(guò)程中我們?cè)跈?quán)限申請(qǐng)的時(shí)候一般要遵循以下 3 個(gè)原則:

最小權(quán)限集,即應(yīng)用中確實(shí)需要的權(quán)限才進(jìn)行申請(qǐng)。

需要用到 XX 權(quán)限時(shí)才進(jìn)行申請(qǐng),即并不是 app 開(kāi)始的時(shí)候一次性申請(qǐng)所有權(quán)限,而是需要用到 XX 特定功能必須要授權(quán)才能使用的時(shí)候(比如調(diào)用照相機(jī)),這個(gè)時(shí)候才申請(qǐng)?jiān)撎囟?quán)限。

未獲取用戶(hù)授權(quán)的話依然能使用應(yīng)用大部分功能,只是必須授權(quán)的功能無(wú)法使用。

下面我針對(duì)敏感權(quán)限申請(qǐng)更好的復(fù)用,編寫(xiě)了一個(gè)第三方開(kāi)源組件,取名為 XdwPermissionsLib。

具體項(xiàng)目源碼請(qǐng)見(jiàn):

https://gitee.com/xdw1019/XdwPermissionsLib

XdwPermissionsLib 介紹

鴻蒙權(quán)限請(qǐng)求框架,提供一個(gè)符合正規(guī)權(quán)限調(diào)用流程的框架并基于鏈?zhǔn)秸{(diào)用(這里簡(jiǎn)稱(chēng) strong 模式),同時(shí)提供一個(gè)并不推薦使用的簡(jiǎn)單權(quán)限框架(簡(jiǎn)稱(chēng) lazy 模式)。

strong 模式:正式項(xiàng)目推薦使用該模式。正規(guī)權(quán)限處理流程,用戶(hù)需要檢驗(yàn)權(quán)限并且處理校驗(yàn)結(jié)果的回調(diào)。

lazy 模式:該模式下開(kāi)發(fā)者幾乎不用去編寫(xiě)請(qǐng)求權(quán)限的代碼,特別是不處理回調(diào)。

該模式不推薦在正式項(xiàng)目中使用,可以用于平時(shí)編寫(xiě)某些 demo 又不想處理權(quán)限的場(chǎng)景下。

當(dāng)然有些 app 不在乎用戶(hù)體驗(yàn),只要不授權(quán)就不讓使用的情況可以使用該模式。

動(dòng)態(tài)申請(qǐng)權(quán)限流程圖如下:

使用說(shuō)明

①Strong 模式

引用:

方式一:通過(guò) mylibrary 模塊生成 har 包,添加 har 包到 libs 文件夾內(nèi)

方式二:maven 引入(待后續(xù)上傳到 maven 中心倉(cāng)庫(kù)再支持)

定義權(quán)限組,比如:

//定義需要?jiǎng)討B(tài)申請(qǐng)的權(quán)限組,可以是一個(gè)或多個(gè)權(quán)限。這里的權(quán)限還必須要在config.json中進(jìn)行配置

private String[] permissions = {

// 存儲(chǔ)權(quán)限

SystemPermission.WRITE_USER_STORAGE,

// 相機(jī)權(quán)限

SystemPermission.CAMERA

};

在需要觸發(fā)權(quán)限申請(qǐng)的地方調(diào)用如下代碼:

//開(kāi)始動(dòng)態(tài)申請(qǐng)權(quán)限,鏈?zhǔn)秸{(diào)用。//實(shí)際開(kāi)發(fā)中申請(qǐng)權(quán)限的動(dòng)作應(yīng)該放到需要用到該權(quán)限的操作中觸發(fā),比如點(diǎn)擊某個(gè)按鈕調(diào)起相機(jī) StrongPermissionsUtils.getInstance(this).checkPermissions(this,permissions).setPermissionStateListener(new StrongPermissionsUtils.PermissionStateListener() {

@Override

public void onPermissionGranted() {

//授權(quán)成功之后的回調(diào)

//此處根據(jù)自己的實(shí)際業(yè)務(wù)編寫(xiě)業(yè)務(wù)邏輯,此處用toast進(jìn)行演示

ToastUtil.toast(getContext(),“授權(quán)成功”);

}

@Override

public void onPermissionDenied(boolean isDisabledPrompt) {

//授權(quán)拒絕之后的回調(diào)

//此處根據(jù)自己的實(shí)際業(yè)務(wù)編寫(xiě)業(yè)務(wù)邏輯,此處用toast進(jìn)行演示

if(isDisabledPrompt){

ToastUtil.toast(getContext(),“您之前拒絕了授權(quán)并且禁止系統(tǒng)再提示,需要手動(dòng)進(jìn)入系統(tǒng)設(shè)置頁(yè)面開(kāi)啟”);

}else{

ToastUtil.toast(getContext(),“您拒絕了授權(quán)”);

}

}

});

在當(dāng)前的 ability 重寫(xiě) onRequestPermissionsFromUserResult 方法,代碼如下:

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

super.onRequestPermissionsFromUserResult(requestCode, permissions, grantResults);

//鑒權(quán)之后的回調(diào),必須調(diào)用

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

}

②Lazy 模式

引用:

方式一:通過(guò) mylibrary 模塊生成 har 包,添加 har 包到 libs 文件夾內(nèi)

方式二:maven 引入(待后續(xù)上傳到 maven 中心倉(cāng)庫(kù)再支持)

將需要調(diào)用的 Ability 繼承 LazyPermissionAblity,如下:

public class MainAbility extends LazyPermissionAblity {

在當(dāng)前 Ability 中定義權(quán)限組,并且在 onStart 方法的第一行調(diào)用 setPermissions 方法。

代碼如下:

public class MainAbility extends LazyPermissionAblity {

//定義需要?jiǎng)討B(tài)申請(qǐng)的權(quán)限組,可以是一個(gè)或多個(gè)權(quán)限。這里的權(quán)限還必須要在config.json中進(jìn)行配置

private String[] permissions = {

// 存儲(chǔ)權(quán)限

SystemPermission.WRITE_USER_STORAGE,

// 相機(jī)權(quán)限

SystemPermission.CAMERA

};

@Override

public void onStart(Intent intent) {

//lazy模式下,setPermissions的代碼調(diào)用必須放在onStart的第一行

super.setPermissions(permissions);

super.onStart(intent);

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

}

}

工程結(jié)構(gòu)說(shuō)明

工程中總共有三個(gè) module,分別為:

mylibrary:自定義的第三方權(quán)限庫(kù),供外部項(xiàng)目調(diào)用。

entry:用來(lái)演示 mylibrary 庫(kù)中 strong 模式下的權(quán)限調(diào)用。

LazySample:用來(lái)演示 mylibrary 庫(kù)中 lazy 模式下的權(quán)限調(diào)用。

責(zé)任編輯:haq

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • APP
    APP
    +關(guān)注

    關(guān)注

    33

    文章

    1586

    瀏覽量

    74243
  • 鴻蒙系統(tǒng)
    +關(guān)注

    關(guān)注

    183

    文章

    2642

    瀏覽量

    68089
  • HarmonyOS
    +關(guān)注

    關(guān)注

    80

    文章

    2126

    瀏覽量

    33049

原文標(biāo)題:鴻蒙APP開(kāi)發(fā):權(quán)限控制詳解!

文章出處:【微信號(hào):gh_834c4b3d87fe,微信公眾號(hào):OpenHarmony技術(shù)社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    【HarmonyOS 5】鴻蒙mPaaS詳解

    【HarmonyOS 5】鴻蒙mPaaS詳解 ##鴻蒙開(kāi)發(fā)能力 ##HarmonyOS SDK應(yīng)用服務(wù)##鴻蒙金融類(lèi)應(yīng)用 (金融理財(cái)# 一、mPaaS是什么? mPaaS 是 Mobi
    的頭像 發(fā)表于 07-11 18:23 ?280次閱讀
    【HarmonyOS 5】<b class='flag-5'>鴻蒙</b>mPaaS詳解

    【HarmonyOS 5】金融應(yīng)用開(kāi)發(fā)鴻蒙組件實(shí)踐

    【HarmonyOS 5】金融應(yīng)用開(kāi)發(fā)鴻蒙組件實(shí)踐 ##鴻蒙開(kāi)發(fā)能力 ##HarmonyOS SDK應(yīng)用服務(wù)##鴻蒙金融類(lèi)應(yīng)用 (金融理財(cái)#
    的頭像 發(fā)表于 07-11 18:20 ?282次閱讀
    【HarmonyOS 5】金融應(yīng)用<b class='flag-5'>開(kāi)發(fā)</b><b class='flag-5'>鴻蒙</b>組件實(shí)踐

    鴻蒙5開(kāi)發(fā)寶藏案例分享---性能體驗(yàn)設(shè)計(jì)

    (loadNonCriticalRes) }) } } 分段加載技巧 : 首屏元素≤15個(gè) 圖片使用WebP格式 避免啟動(dòng)時(shí)網(wǎng)絡(luò)請(qǐng)求 結(jié)語(yǔ):流暢是設(shè)計(jì)出來(lái)的! 看完這些案例是不是發(fā)現(xiàn)鴻蒙的性能優(yōu)化其實(shí)有
    發(fā)表于 06-12 16:45

    使用DevEcoStudio 開(kāi)發(fā)、編譯鴻蒙 NEXT_APP 以及使用中文插件

    # 使用DevEcoStudio 開(kāi)發(fā)、編譯鴻蒙 NEXT_APP 以及使用中文插件 #鴻蒙開(kāi)發(fā)工具 #DevEco Studio ##
    發(fā)表于 06-11 17:18

    鴻蒙原生頁(yè)面高性能解決方案上線OpenHarmony社區(qū) 助力打造高性能原生應(yīng)用

    隨著HarmonyOS NEXT的正式推出,鴻蒙原生應(yīng)用開(kāi)發(fā)熱度高漲,數(shù)量激增。但在三方應(yīng)用鴻蒙化進(jìn)程中,性能問(wèn)題頻出。為此,HarmonyOS NEXT推出了一整套原生頁(yè)面高性能解決方案,包括
    發(fā)表于 01-02 18:00

    鴻蒙Flutter實(shí)戰(zhàn):14-現(xiàn)有Flutter 項(xiàng)目支持鴻蒙 II

    分別安裝官方的3.22版本,以及鴻蒙社區(qū)的 3.22.0 版本 3.搭建 Flutter鴻蒙開(kāi)發(fā)環(huán)境 參考文章《鴻蒙Flutter實(shí)戰(zhàn):01-搭建
    發(fā)表于 12-26 14:59

    鴻蒙機(jī)器人與鴻蒙開(kāi)發(fā)板聯(lián)動(dòng)演示

    鴻蒙機(jī)器人與鴻蒙開(kāi)發(fā)板聯(lián)動(dòng)演示,機(jī)器人的角色為迎賓機(jī)器人,開(kāi)發(fā)板負(fù)責(zé)人賓客出現(xiàn)監(jiān)聽(tīng)
    發(fā)表于 12-02 14:55

    Taro 鴻蒙技術(shù)內(nèi)幕系列(三) - 多語(yǔ)言場(chǎng)景下的通用事件系統(tǒng)設(shè)計(jì)

    作者:京東零售 朱天健 基于 Taro 打造的京東鴻蒙 APP 已跟隨鴻蒙 Next 系統(tǒng)公測(cè),本系列文章將深入解析 Taro 如何實(shí)現(xiàn)使用 React 開(kāi)發(fā)高性能
    的頭像 發(fā)表于 11-27 11:42 ?604次閱讀
    Taro <b class='flag-5'>鴻蒙</b>技術(shù)內(nèi)幕系列(三) - 多語(yǔ)言場(chǎng)景下的通用事件系統(tǒng)設(shè)計(jì)

    如何在開(kāi)源鴻蒙OpenHarmony開(kāi)啟SELinux模式?RK3566鴻蒙開(kāi)發(fā)板演示

    本文介紹開(kāi)源鴻蒙OpenHarmony系統(tǒng)下,開(kāi)啟/關(guān)閉SELinux權(quán)限的方法,觸覺(jué)智能Purple Pi OH鴻蒙開(kāi)發(fā)板演示,已適配全新OpenHarmony5.0 Release
    的頭像 發(fā)表于 11-18 19:03 ?835次閱讀
    如何在開(kāi)源<b class='flag-5'>鴻蒙</b>OpenHarmony開(kāi)啟SELinux模式?RK3566<b class='flag-5'>鴻蒙</b><b class='flag-5'>開(kāi)發(fā)</b>板演示

    鴻蒙原生開(kāi)發(fā)手記:01-元服務(wù)開(kāi)發(fā)

    簡(jiǎn)介 元服務(wù)是鴻蒙中的一種輕量應(yīng)用形態(tài),無(wú)需下載,直接運(yùn)行。類(lèi)似于微信小程序,但與小程序不同的是,元服務(wù)更加輕量。 元服務(wù)使用原生開(kāi)發(fā),是系統(tǒng)級(jí)提供的,無(wú)論從易用性、性能、體驗(yàn)上,都要比小程序好
    發(fā)表于 11-14 17:28

    Taro 鴻蒙技術(shù)內(nèi)幕系列(二):如何讓 W3C 標(biāo)準(zhǔn)的 CSS跑在鴻蒙

    作者:京東零售 馬銀濤 ? 基于 Taro 打造的京東鴻蒙 APP 已跟隨鴻蒙 Next 系統(tǒng)公測(cè),本系列文章將深入解析 Taro 如何實(shí)現(xiàn)使用 React 開(kāi)發(fā)高性能
    的頭像 發(fā)表于 10-31 10:54 ?532次閱讀
    Taro <b class='flag-5'>鴻蒙</b>技術(shù)內(nèi)幕系列(二):如何讓 W3C 標(biāo)準(zhǔn)的 CSS跑在<b class='flag-5'>鴻蒙</b>上

    Taro鴻蒙技術(shù)內(nèi)幕系列(一):如何將React代碼跑在ArkUI上

    基于 Taro 打造的京東鴻蒙 APP 已跟隨鴻蒙 Next 系統(tǒng)公測(cè),本系列文章將深入解析 Taro 如何實(shí)現(xiàn)使用 React 開(kāi)發(fā)高性能鴻蒙
    的頭像 發(fā)表于 10-25 17:24 ?745次閱讀
    Taro<b class='flag-5'>鴻蒙</b>技術(shù)內(nèi)幕系列(一):如何將React代碼跑在ArkUI上

    鴻蒙Flutter實(shí)戰(zhàn):07混合開(kāi)發(fā)

    參考資料 撰寫(xiě)雙端平臺(tái)代碼(插件編寫(xiě)實(shí)現(xiàn)) 鴻蒙Flutter功能開(kāi)發(fā) 鴻蒙add-to-app示例 如何使用混合開(kāi)發(fā) module 【
    發(fā)表于 10-23 16:00

    史無(wú)前例,移植V8虛擬機(jī)到純血鴻蒙系統(tǒng)

    層使用,為保證基于Roma框架開(kāi)發(fā)的業(yè)務(wù)可以零成本、無(wú)縫運(yùn)行到鴻蒙系統(tǒng),需要將Roma框架適配到鴻蒙系統(tǒng)。 Roma框架是基于JS引擎運(yùn)行的
    的頭像 發(fā)表于 09-18 10:28 ?1746次閱讀
    史無(wú)前例,移植V8虛擬機(jī)到純血<b class='flag-5'>鴻蒙</b>系統(tǒng)

    瑞芯微RK3568鴻蒙開(kāi)發(fā)板OpenHarmony系統(tǒng)修改cfg文件權(quán)限方法

    本文適用于OpenHarmony開(kāi)源鴻蒙系統(tǒng)修改cfg文件權(quán)限方法,深圳觸覺(jué)智能研發(fā)的RK3566、RK3568、RK3588等開(kāi)發(fā)板、主板等產(chǎn)品均適用此教程
    的頭像 發(fā)表于 09-11 13:26 ?1929次閱讀
    瑞芯微RK3568<b class='flag-5'>鴻蒙</b><b class='flag-5'>開(kāi)發(fā)</b>板OpenHarmony系統(tǒng)修改cfg文件<b class='flag-5'>權(quán)限</b>方法