一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

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

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

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

高質(zhì)量 HarmonyOS 權(quán)限管控流程

萬少 ? 來源:jf_22972444 ? 作者:jf_22972444 ? 2025-04-02 18:29 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

高質(zhì)量 HarmonyOS 權(quán)限管控流程

HarmonyOS 應(yīng)用開發(fā)過程中,往往會涉及到敏感數(shù)據(jù)硬件資源的調(diào)動和訪問,而這部分的調(diào)用就會涉及到管控這部分的知識和內(nèi)容了。我們需要對它有所了解,才可以在應(yīng)用開發(fā)中提高效率和避免踩坑。

權(quán)限管控了什么

權(quán)限管控,主要是管控 數(shù)據(jù)功能 。

  • 數(shù)據(jù)包括個人數(shù)據(jù)(如照片、通訊錄、日歷、位置等)、設(shè)備數(shù)據(jù)(如設(shè)備標識、相機、麥克風(fēng)等)。
  • 功能包括設(shè)備功能(如訪問攝像頭/麥克風(fēng)、打電話、聯(lián)網(wǎng)等)、應(yīng)用功能(如彈出懸浮窗、創(chuàng)建快捷方式等)。

權(quán)限組和子權(quán)限

我們先看什么是子權(quán)限。比如對于媒體相冊的功能操作來說。讀取相冊內(nèi)容是一種權(quán)限、寫入內(nèi)容到相冊是一種權(quán)限。 那么它們屬于媒體相冊這個大權(quán)限中的子權(quán)限。那么我們的應(yīng)用在申請媒體相冊的讀寫權(quán)限時,考慮到用戶的體驗。其實是會把兩個權(quán)限合并為一個彈出窗口,詢問用戶授予權(quán)限。如果用戶允許了,那么就等于獲得了媒體相冊的讀寫權(quán)限了??偨Y(jié)就是

  • 讀取媒體相冊是子權(quán)限、寫入媒體相冊是子權(quán)限
  • 它們合起來就是一個權(quán)限組。

image-20240608002954074

權(quán)限組和子權(quán)限一覽

鏈接

位置信息;
ohos.permission.LOCATION_IN_BACKGROUND;

ohos.permission.LOCATION;

ohos.permission.APPROXIMATELY_LOCATION;

相機;
ohos.permission.CAMERA;
麥克風(fēng);
ohos.permission.MICROPHONE;
通訊錄;
ohos.permission.READ_CONTACTS;

ohos.permission.WRITE_CONTACTS;

日歷;
ohos.permission.READ_CALENDAR;

ohos.permission.WRITE_CALENDAR;

ohos.permission.READ_WHOLE_CALENDAR;

ohos.permission.WRITE_WHOLE_CALENDAR;

健身運動;
ohos.permission.ACTIVITY_MOTION;
身體傳感器;
ohos.permission.READ_HEALTH_DATA;
圖片和視頻;
ohos.permission.WRITE_IMAGEVIDEO;

ohos.permission.READ_IMAGEVIDEO;

ohos.permission.MEDIA_LOCATION;

音樂和音頻;
ohos.permission.WRITE_AUDIO;

ohos.permission.READ_AUDIO;

文件;
ohos.permission.READ_DOCUMENT;

ohos.permission.WRITE_DOCUMENT;

ohos.permission.READ_MEDIA;

ohos.permission.WRITE_MEDIA;

廣告跟蹤;
ohos.permission.APP_TRACKING_CONSENT;
讀取已安裝應(yīng)用列表;
ohos.permission.GET_INSTALLED_BUNDLE_LIST;
多設(shè)備協(xié)同;
ohos.permission.DISTRIBUTED_DATASYNC;
藍牙;
ohos.permission.ACCESS_BLUETOOTH;
電話;
ohos.permission.ANSWER_CALL;

ohos.permission.MANAGE_VOICEMAIL;

通話記錄;
ohos.permission.READ_CALL_LOG;

ohos.permission.WRITE_CALL_LOG;

信息;
ohos.permission.READ_CELL_MESSAGES;

ohos.permission.READ_MESSAGES;

ohos.permission.RECEIVE_MMS;

ohos.permission.RECEIVE_SMS;

ohos.permission.RECEIVE_WAP_MESSAGES;

ohos.permission.SEND_MESSAGES;

剪切板;
ohos.permission.READ_PASTEBOARD;
文件夾;
ohos.permission.READ_WRITE_DOWNLOAD_DIRECTORY;

ohos.permission.READ_WRITE_DESKTOP_DIRECTORY;

ohos.permission.READ_WRITE_DOCUMENTS_DIRECTORY;

APL 等級

APL(Ability Privilege Level,元能力權(quán)限等級)等級,分為兩類。一類是 應(yīng)用 APL 等級 、另一類是 權(quán)限 APL 等級 。說人話就是 不管官階的士官和其對應(yīng)的權(quán)限之間的關(guān)系。

應(yīng)用 APL 等級

應(yīng)用 APL 等級分為三級:

APL 級別說明
normal默認情況下,應(yīng)用的 APL 等級都為 normal 等級。
system_basic該等級的應(yīng)用服務(wù)提供系統(tǒng)基礎(chǔ)服務(wù)。
system_core該等級的應(yīng)用服務(wù)提供操作系統(tǒng)核心能力。 應(yīng)用 APL 等級不允許配置為 system_core。

權(quán)限 APL 等級

權(quán)限 APL 等級也分為三級:

APL 級別說明開放范圍
normal允許應(yīng)用訪問超出默認規(guī)則外的普通系統(tǒng)資源,如配置 Wi-Fi 信息、調(diào)用相機拍攝等。 這些系統(tǒng)資源的開放(包括數(shù)據(jù)和功能)對用戶隱私以及其他應(yīng)用帶來的風(fēng)險低。APL 等級為 normal 及以上的應(yīng)用。
system_basic允許應(yīng)用訪問操作系統(tǒng)基礎(chǔ)服務(wù)(系統(tǒng)提供或者預(yù)置的基礎(chǔ)功能)相關(guān)的資源,如系統(tǒng)設(shè)置、身份認證等。 這些系統(tǒng)資源的開放對用戶隱私以及其他應(yīng)用帶來的風(fēng)險較高。APL 等級為 system_basic 及以上的應(yīng)用。
system_core涉及開放操作系統(tǒng)核心資源的訪問操作。這部分系統(tǒng)資源是系統(tǒng)最核心的底層服務(wù),如果遭受破壞,操作系統(tǒng)將無法正常運行。- APL 等級為 system_core 的應(yīng)用。 - 僅對系統(tǒng)應(yīng)用開放。

訪問控制列表(ACL)

權(quán)限等級和應(yīng)用 APL 等級是一一對應(yīng)的。原則上,擁有低 APL 等級的應(yīng)用默認無法申請更高等級的權(quán)限。訪問控制列表 ACL(Access Control List)提供了解決低等級應(yīng)用訪問高等級權(quán)限問題的特殊渠道。我們可以將 ACL 理解為讓普通的老百姓也具有某種士官的能力,如調(diào)兵遣將

需要注意的是,并不是所有的權(quán)限都能通過申請 ACL 來實現(xiàn)跨等級的應(yīng)用來獲得。具體哪些權(quán)限可以被跨等級申請使用。HarmonyOS中也有明確標識的。如: 鏈接

image-20240608004247416

授權(quán)方式

不管是什么的方式申請權(quán)限,最后在用戶的體驗上一共分為兩種。 system_grant(系統(tǒng)授權(quán)) 和 user_grant(用戶授權(quán))

  1. system_grant(系統(tǒng)授權(quán))

    • 應(yīng)用被允許訪問的數(shù)據(jù)不會涉及到用戶或設(shè)備的敏感信息
    • 需要在安裝包中申請 system_grant 權(quán)限,那么系統(tǒng)會在用戶安裝應(yīng)用時, 自動把相應(yīng)權(quán)限授予給應(yīng)用 。
  2. user_grant(用戶授權(quán))

    • 會彈出窗口詢問用戶的意見 -應(yīng)用被允許訪問的數(shù)據(jù)將會涉及到用戶或設(shè)備的敏感信息
    • 需要注意的是,如果用戶增加拒絕過授權(quán),那么只能通過引導(dǎo)用戶到系統(tǒng)設(shè)置頁面來手動打開權(quán)限

    image-20240608004726930

申請應(yīng)用權(quán)限流程

一圖勝萬言

總流程圖

image-20240608004827845


normal 等級的應(yīng)用申請權(quán)限

image-20240608005114527

system_basic 等級的應(yīng)用申請權(quán)限

image-20240608005144778

申請應(yīng)用權(quán)限操作步驟

1.聲明權(quán)限-必須

  1. main/module.json5 中 配置 requestPermissions 字段聲明權(quán)限
  2. 配置內(nèi)容
    image-20240608005334602

2.聲明 ACL 權(quán)限-非必須

參考鏈接

image-20240608005438191

3.向用戶申請授權(quán)-非必須

如果你申請的權(quán)限類型是 system_grant(系統(tǒng)授權(quán)) ,那么可以跳過這個步驟。如果你申請的權(quán)限類型是 user_grant(用戶授權(quán)) ,那么需要主動申請權(quán)限,此時用戶會彈出對話框。如

import abilityAccessCtrl, {
  Context,
  PermissionRequestResult,
} from "@ohos.abilityAccessCtrl";
import { BusinessError } from "@ohos.base";
import common from "@ohos.app.ability.common";

let atManager: abilityAccessCtrl.AtManager =
  abilityAccessCtrl.createAtManager();
let context: Context = getContext(this) as common.UIAbilityContext;
// 申請攝像頭權(quán)限
atManager
  .requestPermissionsFromUser(context, ["ohos.permission.CAMERA"])
  .then((data: PermissionRequestResult) = > {
    console.info("data:" + JSON.stringify(data));
    console.info("data permissions:" + data.permissions);
    console.info("data authResults:" + data.authResults);
  })
  .catch((err: BusinessError) = > {
    console.info("data:" + JSON.stringify(err));
  });

此圖只做演示,不和上述代碼具體效果一一對應(yīng)

image-20240608002954074

4.訪問接口-必須

此時,就可以直接調(diào)用相關(guān)接口,實現(xiàn)業(yè)務(wù)功能

5. 當用戶拒絕時,二次申請權(quán)限

針對以上彈窗,如果用戶點擊了 禁止 ,我們可以再次彈窗詢問用戶,如 “不授予權(quán)則無法繼續(xù)使用功能”,“禁止”,“允許”。

此時,如果用戶點擊了允許

  1. 使用 requestPermissionOnSetting 在應(yīng)用內(nèi)直接彈窗 請求授權(quán)
  2. 使用 startAbility 跳轉(zhuǎn)到系統(tǒng)權(quán)限設(shè)置頁面,重新授權(quán)權(quán)限`
    let want: Want = {
      bundleName: "com.huawei.hmos.settings",
      abilityName: "com.huawei.hmos.settings.MainAbility",
      uri: "application_info_entry",
    };
    const ctx = getContext(this) as common.UIAbilityContext;
    ctx.startAbility(want);
    

附上述流程思維導(dǎo)圖

image-20240608010002233


image-20240608010016337

審核編輯 黃宇

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

    關(guān)注

    80

    文章

    2146

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評論

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

    如何做一個高質(zhì)量的畢業(yè)設(shè)計?

    希望跟各位大峽討論一下,如何做一個高質(zhì)量的畢業(yè)設(shè)計? 畢業(yè)設(shè)計專業(yè)代理QQ:445384923
    發(fā)表于 01-26 09:14

    protel輸出高質(zhì)量gerber

    圖文并茂一步一步手把手教你輸出高質(zhì)量的gerber傻瓜式教學(xué)。。。。[hide] [/hide]
    發(fā)表于 12-12 15:43

    高質(zhì)量C編程指南—林銳

    高質(zhì)量C編程指南—林銳
    發(fā)表于 08-03 08:44

    高質(zhì)量C++、C編程指南

    高質(zhì)量C++、C編程指南
    發(fā)表于 08-06 11:58

    高質(zhì)量C&C++

    高質(zhì)量C&C++
    發(fā)表于 08-16 19:45

    高質(zhì)量C++&C 編程指南

    高質(zhì)量C++&C 編程指南
    發(fā)表于 08-19 23:37

    原版PIC實戰(zhàn)項目-C(高質(zhì)量PDF版本)

    英文原版,高質(zhì)量保證。
    發(fā)表于 07-10 21:42

    高質(zhì)量C語言編程

    高質(zhì)量c語言,精,精,精,精華
    發(fā)表于 07-22 13:48

    編寫高質(zhì)量C語言代碼

    編寫高質(zhì)量C語言代碼 編寫高質(zhì)量C語言代碼 編寫高質(zhì)量C語言代碼
    發(fā)表于 07-31 17:47

    林銳《高質(zhì)量C語言編程》

    林銳《高質(zhì)量C語言編程》
    發(fā)表于 08-17 12:10

    高質(zhì)量C++與C編程指南

    高質(zhì)量C++與C編程指南
    發(fā)表于 03-09 10:54

    高質(zhì)量編程

    干貨,《495個C語言問題》、《華為內(nèi)部程序設(shè)計編碼規(guī)范》、《C語言:陷阱和缺陷》、《高質(zhì)量C編程[林銳]》
    發(fā)表于 02-27 19:39

    圖書推薦:高質(zhì)量C++編程指南

    高質(zhì)量C++編程指南
    發(fā)表于 06-12 13:49

    【下載】高質(zhì)量干貨-22本高質(zhì)量EMC電磁兼容性設(shè)計資料

    22本高質(zhì)量EMC電磁兼容性設(shè)計資料請君自取總體太大壓縮成兩個壓縮包。希望這些內(nèi)容能對大家在設(shè)計上有所幫助!
    發(fā)表于 03-20 00:02

    請問怎么才能設(shè)計出高質(zhì)量的印制線路板?

    怎么才能設(shè)計出高質(zhì)量的印制線路板?
    發(fā)表于 04-23 06:57