在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

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

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

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

文章地址如下:

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

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

我們在曾經使用的 Android app 應用中經常會遇到一些 app 會彈出各種敏感權限授權窗口提示用戶授權。

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

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

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

最小權限集,即應用中確實需要的權限才進行申請。

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

未獲取用戶授權的話依然能使用應用大部分功能,只是必須授權的功能無法使用。

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

具體項目源碼請見:

https://gitee.com/xdw1019/XdwPermissionsLib

XdwPermissionsLib 介紹

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

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

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

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

當然有些 app 不在乎用戶體驗,只要不授權就不讓使用的情況可以使用該模式。

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

使用說明

①Strong 模式

引用:

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

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

定義權限組,比如:

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

private String[] permissions = {

// 存儲權限

SystemPermission.WRITE_USER_STORAGE,

// 相機權限

SystemPermission.CAMERA

};

在需要觸發(fā)權限申請的地方調用如下代碼:

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

@Override

public void onPermissionGranted() {

//授權成功之后的回調

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

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

}

@Override

public void onPermissionDenied(boolean isDisabledPrompt) {

//授權拒絕之后的回調

//此處根據自己的實際業(yè)務編寫業(yè)務邏輯,此處用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 引入(待后續(xù)上傳到 maven 中心倉庫再支持)

將需要調用的 Ability 繼承 LazyPermissionAblity,如下:

public class MainAbility extends LazyPermissionAblity {

在當前 Ability 中定義權限組,并且在 onStart 方法的第一行調用 setPermissions 方法。

代碼如下:

public class MainAbility extends LazyPermissionAblity {

//定義需要動態(tài)申請的權限組,可以是一個或多個權限。這里的權限還必須要在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

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

    關注

    33

    文章

    1584

    瀏覽量

    73615
  • 鴻蒙系統
    +關注

    關注

    183

    文章

    2638

    瀏覽量

    67494
  • HarmonyOS
    +關注

    關注

    79

    文章

    2005

    瀏覽量

    31805

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

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

收藏 人收藏

    評論

    相關推薦

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

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

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

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

    鴻蒙機器人與鴻蒙開發(fā)板聯動演示

    鴻蒙機器人與鴻蒙開發(fā)板聯動演示,機器人的角色為迎賓機器人,開發(fā)板負責人賓客出現監(jiān)聽
    發(fā)表于 12-02 14:55

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

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

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

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

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

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

    史無前例,移植V8虛擬機到純血鴻蒙系統

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

    瑞芯微RK3568鴻蒙開發(fā)板OpenHarmony系統修改cfg文件權限方法

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

    鴻蒙開發(fā)Ability Kit程序框架服務:聲明權限

    應用在申請權限時,需要在項目的配置文件中,逐個聲明需要的權限,否則應用將無法獲取授權。
    的頭像 發(fā)表于 07-01 09:22 ?533次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>開發(fā)</b>Ability Kit程序<b class='flag-5'>框架</b>服務:聲明<b class='flag-5'>權限</b>

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

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

    鴻蒙跨平臺框架:【ArkUi-X】創(chuàng)建工程

    鴻蒙推出了鴻ArkUi-X 框架所以就寫個文章分享一下
    的頭像 發(fā)表于 05-13 17:48 ?1341次閱讀
    <b class='flag-5'>鴻蒙</b>跨平臺<b class='flag-5'>框架</b>:【ArkUi-X】創(chuàng)建工程

    鴻蒙開發(fā)接口Ability框架:【 (Context模塊)】

    Context模塊提供了ability或application的上下文的能力,包括允許訪問特定于應用程序的資源、請求和驗證權限等。
    的頭像 發(fā)表于 05-13 16:04 ?983次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>開發(fā)</b>接口Ability<b class='flag-5'>框架</b>:【 (Context模塊)】

    鴻蒙開發(fā)就業(yè)前景到底怎么樣?

    鴻蒙, 作為華為自主研發(fā)的基于微內核的下一代操作系統,正在逐漸走進人們的視野 。隨著鴻蒙系統的不斷發(fā)展和完善,越來越多的人開始關注鴻蒙開發(fā)這一領域,想要了解學習
    發(fā)表于 05-09 17:37

    鴻蒙的1萬個理由,北京中關村現大幅鴻蒙海報

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

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

    開放源代碼項目等代碼, **僅支持鴻蒙內核和鴻蒙系統的應用 ** —— 不再兼容 Android 應用。 既然不再兼容 Android 端 APP,那各大 APP
    發(fā)表于 05-08 17:08
    主站蜘蛛池模板: 韩国特黄特色a大片免费 | 国产永久免费爽视频在线 | 国产精品美女一区二区三区 | 女性私密部位扒开的视频 | 婷婷丁香花 | 夜夜骑首页 | 午夜影院一区二区三区 | 伊人不卡久久大香线蕉综合影院 | 深爱激情五月网 | 毛片毛片免费看 | 久久伊人色 | 亚洲男人a天堂在线2184 | 九色九色九色在线综合888 | 午夜干b| 女上男下边吃奶边做视频成都 | 男女做视频网站免费观看 | 人人看人人看人做人人模 | 成人欧美一区二区三区黑人免费 | 免费一级特黄特色大片在线观看 | 欧美性视频一区二区三区 | a天堂中文在线官网 | 欧美777 | 国产农村女人一级毛片了 | 久久婷婷综合中文字幕 | 黄色网 在线播放 | 久久伊人影视 | 高h污快穿文汁水四溅 | 爽好舒服快受不了了老师 | 天天插天天操天天射 | 欧美xx高清 | 精品特级毛片 | 国产精品怡红院永久免费 | 日本高清在线3344www | 午夜免费剧场 | 在线免费影视 | 亚洲天堂成人在线 | 性欧美bbbbbb动漫 | 成年人的毛片 | 亚洲第一中文字幕 | 日本伊人网 | 天天插天天操 |