精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

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

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

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

鴻蒙APP開發(fā)鴻蒙權(quán)限請求框架

OpenHarmony技術(shù)社區(qū) ? 來源:鴻蒙技術(shù)社區(qū) ? 作者:軟通夏德旺 ? 2021-09-28 09:19 ? 次閱讀

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

文章地址如下:

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

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

我們在曾經(jīng)使用的 Android app 應(yīng)用中經(jīng)常會遇到一些 app 會彈出各種敏感權(quán)限授權(quán)窗口提示用戶授權(quán)。

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

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

而真正的開發(fā)過程中我們在權(quán)限申請的時候一般要遵循以下 3 個原則:

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

需要用到 XX 權(quán)限時才進(jìn)行申請,即并不是 app 開始的時候一次性申請所有權(quán)限,而是需要用到 XX 特定功能必須要授權(quán)才能使用的時候(比如調(diào)用照相機),這個時候才申請該特定權(quán)限。

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

下面我針對敏感權(quán)限申請更好的復(fù)用,編寫了一個第三方開源組件,取名為 XdwPermissionsLib。

具體項目源碼請見:

https://gitee.com/xdw1019/XdwPermissionsLib

XdwPermissionsLib 介紹

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

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

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

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

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

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

使用說明

①Strong 模式

引用:

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

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

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

//定義需要動態(tài)申請的權(quán)限組,可以是一個或多個權(quán)限。這里的權(quán)限還必須要在config.json中進(jìn)行配置

private String[] permissions = {

// 存儲權(quán)限

SystemPermission.WRITE_USER_STORAGE,

// 相機權(quán)限

SystemPermission.CAMERA

};

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

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

@Override

public void onPermissionGranted() {

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

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

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

}

@Override

public void onPermissionDenied(boolean isDisabledPrompt) {

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

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

if(isDisabledPrompt){

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

}else{

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

}

}

});

在當(dāng)前的 ability 重寫 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 模式

引用:

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

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

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

public class MainAbility extends LazyPermissionAblity {

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

代碼如下:

public class MainAbility extends LazyPermissionAblity {

//定義需要動態(tài)申請的權(quán)限組,可以是一個或多個權(quán)限。這里的權(quán)限還必須要在config.json中進(jìn)行配置

private String[] permissions = {

// 存儲權(quán)限

SystemPermission.WRITE_USER_STORAGE,

// 相機權(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)說明

工程中總共有三個 module,分別為:

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

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

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

責(zé)任編輯:haq

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

    關(guān)注

    33

    文章

    1568

    瀏覽量

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

    關(guān)注

    183

    文章

    2634

    瀏覽量

    66220
  • HarmonyOS
    +關(guān)注

    關(guān)注

    79

    文章

    1967

    瀏覽量

    30022

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

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

收藏 人收藏

    評論

    相關(guān)推薦

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

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

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

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

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

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

    哪吒汽車APP啟動鴻蒙原生應(yīng)用開發(fā)

    哪吒汽車正式簽約,啟動鴻蒙原生應(yīng)用開發(fā);在5月17日,在上海市經(jīng)濟(jì)和信息化委員會指導(dǎo)的“千帆競發(fā)啟航 共筑鴻蒙生態(tài)——HDD上海站·鴻蒙原生應(yīng)用專場”活動中哪吒汽車與華為簽約啟動
    的頭像 發(fā)表于 05-18 09:48 ?1144次閱讀

    學(xué)鴻蒙的1萬個理由,北京中關(guān)村現(xiàn)大幅鴻蒙海報

    。學(xué)鴻蒙,可以收獲新的技能、更高的薪酬、還有更多榮譽。 據(jù)悉,目前已有超過4000個APP啟動了鴻蒙原生應(yīng)用開發(fā),已有23家985高校、46家211高校已開設(shè)或即將開設(shè)Harmony
    發(fā)表于 05-08 20:31

    最新開源代碼證實!“鴻蒙原生版”微信正在積極開發(fā)

    開放源代碼項目等代碼, **僅支持鴻蒙內(nèi)核和鴻蒙系統(tǒng)的應(yīng)用 ** —— 不再兼容 Android 應(yīng)用。 既然不再兼容 Android 端 APP,那各大 APP
    發(fā)表于 05-08 17:08

    鴻蒙OS開發(fā)實例:【HarmonyHttpClient】網(wǎng)絡(luò)框架

    鴻蒙上使用的Http網(wǎng)絡(luò)框架,里面包含純Java實現(xiàn)的HttpNet,類似okhttp使用,支持同步和異步兩種請求方式;還有鴻蒙版retrofit,和Android版Retrofit相
    的頭像 發(fā)表于 04-12 16:58 ?803次閱讀
    <b class='flag-5'>鴻蒙</b>OS<b class='flag-5'>開發(fā)</b>實例:【HarmonyHttpClient】網(wǎng)絡(luò)<b class='flag-5'>框架</b>

    鴻蒙實戰(zhàn)項目開發(fā):【短信服務(wù)】

    ://gitee.com/openharmony/applications_app_samples.git git pull origin master ? 最后呢,很多開發(fā)朋友不知道需要學(xué)習(xí)那些鴻蒙技術(shù)?
    發(fā)表于 03-03 21:29

    學(xué)習(xí)鴻蒙背后的價值?星河版開放如何學(xué)習(xí)?

    現(xiàn)在是2024年,華為在1月18開展了鴻蒙千帆起儀式發(fā)布會。宣布了鴻蒙星河版,并對開發(fā)者開放申請,此次發(fā)布會主要是說明了,鴻蒙已經(jīng)是全棧自研底座,
    發(fā)表于 02-22 20:55

    純血鴻蒙系統(tǒng),拿什么與安卓、iOS比?

    鴻蒙系統(tǒng)的出現(xiàn)就是來打破這種僵局的,華為鴻蒙是以生態(tài)系統(tǒng)為基本而產(chǎn)生的獨立系統(tǒng)。如果與Android、iOS系統(tǒng)無異何必浪費時間。生態(tài)圈為1+8+N,其中不止是app應(yīng)用層開發(fā)、還有智
    發(fā)表于 02-21 21:04

    鴻蒙開發(fā)者預(yù)覽版如何?

    在24年的華為鴻蒙發(fā)布會中表示。預(yù)覽版已經(jīng)向開發(fā)者開放申請,首批支持的機型有三款分別為華為 Mate 60、華為Mate 60 Pro、華為Mate X5。 其HarmonyOS NEXT去除
    發(fā)表于 02-17 21:54

    使用 Taro 開發(fā)鴻蒙原生應(yīng)用 —— 快速上手,鴻蒙應(yīng)用開發(fā)指南

    隨著鴻蒙系統(tǒng)的不斷完善,許多應(yīng)用廠商都希望將自己的應(yīng)用移植到鴻蒙平臺上。最近,Taro 發(fā)布了 v4.0.0-beta.x 版本,支持使用 Taro 快速開發(fā)鴻蒙原生應(yīng)用,也可將現(xiàn)有的
    的頭像 發(fā)表于 02-02 16:09 ?823次閱讀
    使用 Taro <b class='flag-5'>開發(fā)</b><b class='flag-5'>鴻蒙</b>原生應(yīng)用 —— 快速上手,<b class='flag-5'>鴻蒙</b>應(yīng)用<b class='flag-5'>開發(fā)</b>指南

    鴻蒙開發(fā)教程

    去年8 月份華為發(fā)布會上,華為發(fā)布了HarmonyOS NEXT預(yù)覽版,宣布不再兼容安卓應(yīng)用。大家期待的純血鴻蒙終于要來臨了,next 預(yù)覽版本現(xiàn)在已經(jīng)開放申請渠道了,Next 開發(fā)者預(yù)覽版本目前只
    的頭像 發(fā)表于 01-31 17:11 ?729次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>開發(fā)</b>教程

    鴻蒙開發(fā)用什么語言?

    兩種開發(fā)方向 我們常說鴻蒙開發(fā),但是其實鴻蒙開發(fā)分為兩個方向: 一個是系統(tǒng)級別的開發(fā),比如驅(qū)動,
    的頭像 發(fā)表于 01-30 16:12 ?1495次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>開發(fā)</b>用什么語言?

    java后端能轉(zhuǎn)鴻蒙app開發(fā)

    java后端轉(zhuǎn)鴻蒙app開發(fā)好。 還是前端呢
    發(fā)表于 01-29 18:15