鴻蒙 系統-安全-程序訪問控制-應用權限管控

Ability Kit 提供了一種允許應用訪問系統資源(如:通訊錄等)和系統能力(如:訪問攝像頭、麥克風等)的通用權限訪問方式,來保護系統數據(包括用戶個人數據)或功能,避免它們被不當或惡意使用。

應用權限保護的對象可以分為數據和功能:

  • 數據 包括個人數據(如照片、通訊錄、日歷、位置等)、設備數據(如設備標識、相機、麥克風等)。
  • 功能 包括設備功能(如訪問攝像頭/麥克風、打電話、聯網等)、應用功能(如彈出懸浮窗、創建快捷方式等)。

系統采用 TokenID 作為應用的唯一標識。權限管理服務通過應用的 TokenID 來管理應用的 AT(Access Token)信息,包括應用身份標識 APP ID、子用戶 ID、應用分身索引信息、應用 APL、應用權限授權狀態等。在資源使用時,系統將通過 TokenID 作為唯一身份標識映射獲取對應應用的權限授權狀態信息,并依此進行鑒權,從而管控應用的資源訪問行為。
系統支持多用戶特性和應用分身特性,同一個應用在不同的子用戶下和不同的應用分身下會有各自的 AT,這些 AT 的 TokenID 也是不同的。


授權方式

  • system_grant(系統授權)
    在該類型的權限許可下,應用被允許訪問的數據不會涉及到用戶或設備的敏感信息,應用被允許執行的操作對系統或者其他應用產生的影響可控。
    如果在應用中申請了 system_grant 權限,那么系統會在用戶安裝應用時,自動把相應權限授予給應用。配置文件(module.json5)申請權限

  • user_grant(用戶授權)
    在該類型的權限許可下,應用被允許訪問的數據將會涉及到用戶或設備的敏感信息,應用被允許執行的操作可能對系統或者其他應用產生嚴重的影響。
    該類型權限不僅需要在安裝包中申請權限,還需要在應用動態運行時,通過發送彈窗的方式請求用戶授權。在用戶手動允許授權后,應用才會真正獲取相應權限,從而成功訪問操作目標對象。配置文件申請權限 + 運行時彈窗請求授權

常見權限

常見 系統授權 權限

權限描述
ohos.permission.INTERNET允許使用網絡資源
ohos.permission.KEEP_BACKGROUND_RUNNING允許 Ability 在后臺持續運行
ohos.permission.USE_BLUETOOTH允許應用查看藍牙的配置
ohos.permission.PRINT允許應用獲取打印框架的能力
ohos.permission.ACCELEROMETER允許應用讀取加速度傳感器的數據
ohos.permission.VIBRATE允許應用控制馬達振動

常見 用戶授權 權限

權限描述
ohos.permission.APP_TRACKING_CONSENT允許應用讀取開放匿名設備標識符
ohos.permission.CAMERA允許應用使用相機
ohos.permission.DISTRIBUTED_DATASYNC允許不同設備間的數據交換
ohos.permission.APPROXIMATELY_LOCATION允許應用獲取設備模糊位置信息
ohos.permission.LOCATION允許應用獲取設備位置信息
ohos.permission.WRITE_MEDIA允許應用讀寫用戶外部存儲中的媒體文件信息

配置文件授權

用在申請權限時,需要在項目的配置文件(module.json5)中,逐個聲明需要的權限,否則應用將無法獲取授權:

{"module": {"requestPermissions": [{"name": "ohos.permission.PERMISSION_NAME", //所有權限都必須聲明權限名稱"reason": "$string:reason", //申請原因,user_grant 權限必需"usedScene": {//使用場景,user_grant 權限必需"abilities": ["EntryAbility"], //哪些UIAbility中使用"when": "inuse" //何時使用}}]}
}

向用戶申請授權

當應用需要訪問用戶的隱私信息或使用系統能力時,例如獲取位置信息、訪問日歷、使用相機拍攝照片或錄制視頻等,應該向用戶請求授權,這部分權限是 user_grant 權限。

當應用申請 user_grant 權限時,需要完成以下步驟:

  • 在配置文件(module.json5)中,聲明應用需要請求的權限。
  • 將應用中需要申請權限的目標對象與對應目標權限進行關聯,讓用戶明確地知道,哪些操作需要用戶向應用授予指定的權限。
  • 運行應用時,在用戶觸發訪問操作目標對象時應該調用接口,精準觸發動態授權彈框。該接口的內部會檢查當前用戶是否已經授權應用所需的權限,如果當前用戶尚未授予應用所需的權限,該接口會拉起動態授權彈框,向用戶請求授權。
  • 檢查用戶的授權結果,確認用戶已授權才可以進行下一步操作。

每次執行需要目標權限的操作時,應用都必須使用 checkAccessToken()函數檢查自己是否已經具有該權限
每次訪問受目標權限保護的接口之前,都需要使用 requestPermissionsFromUser()接口請求相應的權限

// 下面的代碼可以運行在 Ability 啟動時,或者某個 UI頁面 啟動時
import { abilityAccessCtrl, bundleManager, Permissions } from '@kit.AbilityKit'async checkPermissions() {let permissions: Permissions[] = ["ohos.permission.CAMERA"]let accessMgr = abilityAccessCtrl.createAtManager()const flags = bundleManager.BundleFlag.GET_BUNDLE_INFO_WITH_APPLICATION;const bundleInfo = await bundleManager.getBundleInfoForSelf(flags)const grantStatus =await accessMgr.checkAccessToken(bundleInfo.appInfo.accessTokenId, permissions[0])if (grantStatus === abilityAccessCtrl.GrantStatus.PERMISSION_DENIED) {let results = await accessMgr.requestPermissionsFromUser(getContext(), permissions)if (results.authResults[0] == 0) {// 用戶通過授權} else {// 用戶拒絕授權}}}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/80575.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/80575.shtml
英文地址,請注明出處:http://en.pswp.cn/web/80575.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

算法-數對的使用

1、數對可用于數組排序中&#xff0c;并且可記憶化排序前的元素下標 #include<iostream> #include<string> #include<bits/stdc.h> using namespace std; typedef long long ll; const int N 2e5 10; pair<int, int> a[N]; void solve() {ll n;cin …

Linux基礎第四天

系統之間文件共享 想要實現兩個不同的系統之間實現文件共享&#xff0c;最簡單的一種方案就是設置VMware軟件的共享文件夾&#xff0c;利用共享文件夾可以實現linux系統和windows系統之間的文件共享&#xff0c;這樣就可以實現在windows系統上編輯程序&#xff0c;然后在linux系…

Docker 核心原理詳解:Namespaces 與 Cgroups 如何實現資源隔離與限制

#Docker疑難雜癥解決指南# Docker 作為容器化技術的代名詞,徹底改變了軟件的開發、部署和管理方式。它憑借其輕量、快速、一致性強的特性,成為了現代云原生架構的基石。然而,Docker 容器的神奇之處并非“無中生有”,其背后是 Linux 內核的兩大核心技術——Namespaces(命名…

GitHub 趨勢日報 (2025年05月14日)

本日報由 TrendForge 系統生成 https://trendforge.devlive.org/ &#x1f310; 本日報中的項目描述已自動翻譯為中文 &#x1f4c8; 今日整體趨勢 Top 10 排名項目名稱項目描述今日獲星總星數語言1xming521/WeClone&#x1f680;從聊天記錄創造數字分身的一站式解決方案&…

【Go】從0開始學習Go

文章目錄 從0開始學習Go0 與C對比1 代碼框架1.1 helloworld式代碼示例1.2 主體代碼元素&#xff08;核心三部分&#xff09;1.3 其他 2 與C/C區別3 有用的小工具4 注意事項 從0開始學習Go 0 與C對比 特性CGo編譯型語言需要編譯為機器碼直接編譯為二進制可執行文件靜態類型類型…

簡單說一下 Webpack分包

最近在看有關webpack分包的知識&#xff0c;搜索了很多資料&#xff0c;感覺這一塊很是迷惑&#xff0c;網上的資料講的也迷迷糊糊&#xff0c;這里簡單總結分享一下&#xff0c;也當個筆記。 如有錯誤請指出。 為什么需要分包 我們知道&#xff0c;webpack的作用&#xff0c…

使用Python和FastAPI構建網站爬蟲:Oncolo醫療文章抓取實戰

使用Python和FastAPI構建網站爬蟲&#xff1a;Oncolo醫療文章抓取實戰 前言項目概述技術棧代碼分析1. 導入必要的庫2. 初始化FastAPI應用3. 定義請求模型4. 核心爬蟲功能4.1 URL驗證和準備4.2 設置HTTP請求4.3 發送請求和解析HTML4.4 提取文章內容4.5 保存結果和返回數據 5. AP…

YoloV8改進策略:卷積篇|風車卷積|即插即用

文章目錄 論文信息論文翻譯摘要引言相關研究紅外搜索與跟蹤檢測和分割網絡紅外搜索與跟蹤數據集的損失函數紅外搜索與跟蹤數據集方法風車形卷積(PConv)基于尺度的動態損失SIRST - UAVB數據集實驗實驗設置與其他方法的比較多模型上的消融實驗結論致謝代碼改進方法測試結果總結…

【NLP】36. 從指令微調到人類偏好:構建更有用的大語言模型

從指令微調到人類偏好&#xff1a;構建更有用的大語言模型 大語言模型&#xff08;LLMs&#xff09;已經成為現代自然語言處理系統的核心&#xff0c;但單純依賴傳統語言建模目標&#xff0c;往往難以滿足實際應用的“人類意圖”。從 Instruction Tuning&#xff08;指令微調&…

基于Transformers與深度學習的微博評論情感分析及AI自動回復系統

前言 這個項目存在cookie沒有自動更新問題&#xff0c;后續可能會發出來解決教程&#xff0c;還有微博網頁版的話最多看到300條評論&#xff0c;而且回復別人信息的話最多回復15條就要休息5分鐘左右才能評論 1. 項目概述 本項目實現了一個微博評論自動化處理系統&#xff0c…

詳解 Zephyr RTOS:架構、功能與開發指南

目錄 Zephyr RTOS 的核心特性 1. 輕量級和可擴展性 2. 實時性能 3. 多平臺支持 4. 安全性 5. 社區和生態系統 Zephyr 的架構 1. 內核 2. 驅動模型 3. 網絡棧 4. 文件系統 開發環境和工具鏈 安裝和配置 開發流程 1. 應用程序開發 2. 調試和測試 3. 部署 實際應…

人工智能重塑醫療健康:從輔助診斷到個性化治療的全方位變革

人工智能正在以前所未有的速度改變著醫療健康領域&#xff0c;從影像診斷到藥物研發&#xff0c;從醫院管理到遠程醫療&#xff0c;AI 技術已滲透到醫療服務的各個環節。本文將深入探討人工智能如何賦能醫療健康產業&#xff0c;分析其在醫學影像、臨床決策、藥物研發、個性化醫…

Linux筆記---內核態與用戶態

用戶態&#xff08;User Mode&#xff09; 權限級別&#xff1a;較低&#xff0c;限制應用程序直接訪問硬件或關鍵系統資源。 適用場景&#xff1a;普通應用程序的運行環境。 限制&#xff1a;無法執行特權指令&#xff08;如操作I/O端口、修改內存管理單元配置等&#xff09…

Spring 代理與 Redis 分布式鎖沖突:一次鎖釋放異常的分析與解決

Spring 代理與 Redis 分布式鎖沖突&#xff1a;一次鎖釋放異常的分析與解決 Spring 代理與 Redis 分布式鎖沖突&#xff1a;一次鎖釋放異常的分析與解決1. 問題現象與初步分析2 . 原因探究&#xff1a;代理機制對分布式鎖生命周期的干擾3. 問題復現偽代碼4. 解決方案&#xff1…

SQL:多列匹配(Multiple-column Matching)

目錄 基礎概念 應用場景詳解 1. 多列等值匹配 2. 多列 IN 匹配&#xff08;集合匹配&#xff09; 3. 多列 JOIN 匹配&#xff08;復合鍵連接&#xff09; 4. 多列匹配 子查詢 5. 多列匹配 EXISTS 6. 多列匹配 UNION&#xff08;組合數據源&#xff09; 7. 多列匹配…

基于DeepSeek的智能客服系統實踐與創新

引言:AI大模型重塑客戶服務新范式 近年來,AI大模型技術的突破性進展正在深刻改變傳統客戶服務模式。作為國內領先的AI企業,DeepSeek憑借其創新的算法架構(如MoE混合專家模型、動態學習率調度器)和極致的成本效益(僅為同類模型成本的1/20),在自然語言理解、情感分析、多…

SGLang和vllm比有什么優勢?

環境&#xff1a; SGLang vllm 問題描述&#xff1a; SGLang和vllm比有什么優勢&#xff1f; 解決方案&#xff1a; SGLang和vLLM都是在大語言模型&#xff08;LLM&#xff09;推理和部署領域的開源項目或框架&#xff0c;它們各自有不同的設計目標和優勢。下面我綜合目前…

三、Hive DDL數據庫操作

在 Apache Hive 中&#xff0c;數據庫 (Database)&#xff0c;有時也被稱為模式 (Schema)&#xff0c;是組織和管理 表及其他對象的基本命名空間單元。熟練掌握數據庫層面的數據定義語言 (DDL) 操作&#xff0c;是構建清晰、有序的 Hive 數據倉庫的第一步。本篇筆記將詳細梳理 …

Redis(2):Redis + Lua為什么可以實現原子性

Redis 作為一款高性能的鍵值對存儲數據庫&#xff0c;與 Lua 腳本相結合&#xff0c;為實現原子性操作提供了強大的解決方案&#xff0c;本文將深入探討 Redis Lua 實現原子性的相關知識 原子性概念的厘清 在探討 Redis Lua 的原子性之前&#xff0c;我們需要明確原子性的概念…

科普:極簡的AI亂戰江湖

本文無圖。 大模型 ?2022年2月&#xff0c;?文生圖應用的鼻祖Midjourney上線。 ?2022年8月&#xff0c;?開源版的Midjourney&#xff0c;也就是Stable Diffusion上線。 2022年11月30日?&#xff0c;OpenAI正式發布ChatGPT-3.5。 此后&#xff0c;不斷有【大模型】面世&…