選擇申請(qǐng)權(quán)限的方式
應(yīng)用在訪問(wèn)數(shù)據(jù)或者執(zhí)行操作時(shí),需要評(píng)估該行為是否需要應(yīng)用具備相關(guān)的權(quán)限。如果確認(rèn)需要目標(biāo)權(quán)限,則需要在應(yīng)用安裝包中申請(qǐng)目標(biāo)權(quán)限。
每一個(gè)權(quán)限的權(quán)限等級(jí)、授權(quán)方式不同,申請(qǐng)權(quán)限的方式也不同,開(kāi)發(fā)者在申請(qǐng)權(quán)限前,需要先根據(jù)以下流程判斷應(yīng)用能否申請(qǐng)目標(biāo)權(quán)限。
上圖的數(shù)字標(biāo)注,請(qǐng)參考以下說(shuō)明:
- 標(biāo)注1:應(yīng)用APL等級(jí)與權(quán)限等級(jí)的匹配關(guān)系請(qǐng)參考[APL等級(jí)說(shuō)明]。
- 標(biāo)注2:權(quán)限的授權(quán)方式分為user_grant(用戶授權(quán))和system_grant(系統(tǒng)授權(quán)),具體請(qǐng)參考[授權(quán)方式說(shuō)明]。
- 開(kāi)發(fā)前請(qǐng)熟悉鴻蒙開(kāi)發(fā)指導(dǎo)文檔 :[
gitee.com/li-shizhen-skin/harmony-os/blob/master/README.md
]- 如果目標(biāo)權(quán)限是system_grant類型,開(kāi)發(fā)者在進(jìn)行權(quán)限申請(qǐng)后,系統(tǒng)會(huì)在安裝應(yīng)用時(shí)自動(dòng)為其進(jìn)行權(quán)限預(yù)授予,開(kāi)發(fā)者不需要做其他操作即可使用權(quán)限。
- 在應(yīng)用需要獲取user_grant權(quán)限時(shí),請(qǐng)完成以下步驟:
- 在配置文件中,聲明應(yīng)用需要請(qǐng)求的權(quán)限。
- 將應(yīng)用中需要申請(qǐng)權(quán)限的目標(biāo)對(duì)象與對(duì)應(yīng)目標(biāo)權(quán)限進(jìn)行關(guān)聯(lián),讓用戶明確地知道,哪些操作需要用戶向應(yīng)用授予指定的權(quán)限。
- 運(yùn)行應(yīng)用時(shí),在用戶觸發(fā)訪問(wèn)操作目標(biāo)對(duì)象時(shí)應(yīng)該調(diào)用接口,精準(zhǔn)觸發(fā)動(dòng)態(tài)授權(quán)彈框。該接口的內(nèi)部會(huì)檢查當(dāng)前用戶是否已經(jīng)授權(quán)應(yīng)用所需的權(quán)限,如果當(dāng)前用戶尚未授予應(yīng)用所需的權(quán)限,該接口會(huì)拉起動(dòng)態(tài)授權(quán)彈框,向用戶請(qǐng)求授權(quán)。
- 檢查用戶的授權(quán)結(jié)果,確認(rèn)用戶已授權(quán)才可以進(jìn)行下一步操作。
- 標(biāo)注3:應(yīng)用可以通過(guò)ACL(訪問(wèn)控制列表)方式申請(qǐng)高級(jí)別的權(quán)限。
應(yīng)用可根據(jù)目標(biāo)權(quán)限的開(kāi)放范圍、授權(quán)方式,參考以下操作路徑申請(qǐng)對(duì)應(yīng)權(quán)限。
normal等級(jí)應(yīng)用申請(qǐng)權(quán)限的方式
權(quán)限類型 | 授權(quán)方式 | 操作路徑 |
---|---|---|
[所有應(yīng)用可申請(qǐng)] | system_grant | [聲明權(quán)限] > 訪問(wèn)接口 |
[所有應(yīng)用可申請(qǐng)] | user_grant | [聲明權(quán)限] > [向用戶申請(qǐng)授權(quán)] > 訪問(wèn)接口 |
[允許normal等級(jí)應(yīng)用通過(guò)ACL跨級(jí)申請(qǐng)] | system_grant | [聲明權(quán)限] > [聲明ACL權(quán)限] > 訪問(wèn)接口 |
[允許normal等級(jí)應(yīng)用通過(guò)ACL跨級(jí)申請(qǐng)] | user_grant | [聲明權(quán)限] > [聲明ACL權(quán)限]> [向用戶申請(qǐng)授權(quán)] > 訪問(wèn)接口 |
說(shuō)明:
- 如果system_basic等級(jí)的權(quán)限,ACL使能為false,則normal等級(jí)應(yīng)用無(wú)法申請(qǐng)?jiān)摍?quán)限。
- 當(dāng)前可通過(guò)DevEco Studio完成[ACL方式跨級(jí)別申請(qǐng)權(quán)限],但該方法僅用于應(yīng)用調(diào)試階段使用,不可用于發(fā)布上架應(yīng)用市場(chǎng)。如果需要開(kāi)發(fā)商用版本的應(yīng)用,請(qǐng)?jiān)趯?duì)應(yīng)的應(yīng)用市場(chǎng)進(jìn)行發(fā)布證書(shū)和Profile文件的申請(qǐng)。
system_basic等級(jí)應(yīng)用申請(qǐng)權(quán)限的方式
權(quán)限等級(jí) | 授權(quán)方式 | ACL使能 | 操作路徑 |
---|---|---|---|
normal、system_basic | system_grant | - | [聲明權(quán)限]> 訪問(wèn)接口 |
normal、system_basic | user_grant | - | [聲明權(quán)限] > [向用戶申請(qǐng)授權(quán)]> 訪問(wèn)接口 |
system_core | system_grant | true | [聲明權(quán)限]> [聲明ACL權(quán)限]> 訪問(wèn)接口 |
system_core | user_grant | true | [聲明權(quán)限] > [聲明ACL權(quán)限] > [向用戶申請(qǐng)授權(quán)] > 訪問(wèn)接口HarmonyOS與OpenHarmony鴻蒙文檔籽料:mau123789是v直接拿 |
如果應(yīng)用需要將自身的APL等級(jí)聲明為system_basic及以上,在開(kāi)發(fā)應(yīng)用安裝包時(shí),需要修改應(yīng)用的HarmonyAppProvision配置文件即SDK目錄下的“Toolchains / _{Version} _/ lib / UnsgnedReleasedProfileTemplate.json
”文件),并重新進(jìn)行應(yīng)用簽名。
修改方式:
HarmonyAppProvision配置文件示例如下所示,修改"bundle-info" > "apl" 字段。
"bundle-info" : {
// ...
"apl": "system_basic",
// ...
},
說(shuō)明: 直接修改HarmonyAppProvision配置文件的方式,僅用于應(yīng)用調(diào)試階段使用,不可用于發(fā)布上架應(yīng)用市場(chǎng)。如果需要開(kāi)發(fā)商用版本的應(yīng)用,請(qǐng)?jiān)趯?duì)應(yīng)的應(yīng)用市場(chǎng)進(jìn)行發(fā)布證書(shū)和Profile文件的申請(qǐng)。
審核編輯 黃宇
-
接口
+關(guān)注
關(guān)注
33文章
9015瀏覽量
153820 -
框架
+關(guān)注
關(guān)注
0文章
404瀏覽量
17914 -
鴻蒙
+關(guān)注
關(guān)注
60文章
2628瀏覽量
44101
發(fā)布評(píng)論請(qǐng)先 登錄
評(píng)論