深入理解Android許可權系統 – uses-permission

Android系統架構設計下,許可權管理是其核心思想之一,Android引入了許可權管理機制,使得開發者可以在其應用程序中聲明需要訪問的許可權以及限制其他應用程序訪問其敏感數據。其中,uses-permission在許可權管理中扮演了重要的角色。

一、usesPermissionFlags

usesPermissionFlags是一個用於向Android系統表明其訪問某種許可權時所需的標誌位的元素。在聲明的時候,它需要在uses-permission標籤中添加android:flags標籤,並在其中列出每個標誌。flags的類型為int。

<manifest ...>
    <uses-permission android:name="android.permission.WRITE_SETTINGS"
        android:label="string resource"
        android:description="string resource"
        android:icon="drawable resource"
        android:permissionGroup="string resource"
        android:protectionLevel="normal" android:flags="int">
    </uses-permission>
</manifest>

其中,android:flags=”int”,int是一個從以下列表中選擇的整數值的拼接:

1、REQUEST_IGNORE_BATTERY_OPTIMIZATIONS:請求省電模式忽略(this is to request that the app be whitelisted from being affected by battery optimizations like Doze mode)

2、REQUEST_INSTALL_PACKAGES:請求安裝應用程序

3、REQUEST_DELETE_PACKAGES:請求刪除應用程序

4、REQUEST_IGNORE_BACKGROUND_DATA_SETTINGS:請求忽略後台數據設置

5、REQUEST_WIPE_DATA:請求擦除設備的所有數據

二、uses permission android

uses permission android 用於表明某個應用程序需要使用的許可權。在AndroidManifest.xml文件的manifest元素中聲明。在uses-permission元素中復用它,如下:

<manifest package="string"
      xmlns:android="http://schemas.android.com/apk/res/android"
      android:installLocation=["auto"|"internalOnly"|"preferExternal"]>
    ...
    <uses-permission android:name="string"/>
    <permission android:name="string"
        android:label="string resource"
        android:description="string resource"
        android:permissionGroup="string resource"
        android:protectionLevel=["normal"|"dangerous"|
                                 "signature"|"signatureOrSystem"] />
    <permission-tree android:name="string"
        android:label="string resource"
        android:description="string resource"
        android:permissionGroup="string resource"
        android:protectionLevel=["normal"|"dangerous"|
                                 "signature"|"signatureOrSystem"] />
    <permission-group android:name="string"
        android:label="string resource"
        android:description="string resource"
        android:priority="integer"
        android:icon="drawable resource" />
    ...
</manifest>

其中,uses permission android的屬性包括:

1、android:name
應用所請求的許可權的名稱,例如android.permission.READ_CONTACTS。

2、android:maxSdkVersion
指定該許可權適用的最高SDK版本

3、android:minSdkVersion
指定該許可權適用的最低SDK版本

4、android:required
是否將該許可權視為內置到應用中

5、android:supportsRtl
表明您的應用程序支持從右到左的布局。

三、uses permission

uses permission是一個必需元素,用於表明應用程序需要哪些許可權,這將在Android系統上運行。以下是一個例子:

<manifest package="string"
      xmlns:android="http://schemas.android.com/apk/res/android"
      android:sharedUserId="string"
      android:sharedUserLabel="string resource"
      android:versionCode="integer"
      android:versionName="string"
      android:installLocation=["auto"|"internalOnly"|"preferExternal"]>
        <uses-sdk android:minSdkVersion="integer"
          android:targetSdkVersion="integer"
          android:maxSdkVersion="integer" />
        <uses-configuration />
        <uses-feature android:name="string"
          android:glEsVersion="integer" 
          android:required=["true"|"false"] />
        <uses-permission android:name="string"
          android:maxSdkVersion="integer"
          android:minSdkVersion="integer"
          android:required=["true"|"false"]
          android:protectionLevel=["normal"|"dangerous"|
                                   "signature"|"signatureOrSystem"] />
        <permission android:name="string"
          android:permissionGroup="string"
          android:protectionLevel=["normal"|"dangerous"|"signature"|"signatureOrSystem"]>
       ...
</manifest>

uses permission的一些屬性包括:

1、android:name
應用所請求的許可權的名稱,例如android.permission.READ_CONTACTS。

2、android:maxSdkVersion
指定該許可權適用的最高SDK版本

3、android:minSdkVersion
指定該許可權適用的最低SDK版本

4、android:required
是否將該許可權視為應用程序的一部分

5、android:protectionLevel
指定此許可權的保護級別

四、總結

在Android許可權管理中,uses-permission扮演了重要的角色。使用uses-permission,可以指定應用程序需要哪些許可權;通過uses permission android,可以申請需要使用的許可權;使用usesPermissionFlags可以為許可權增加標誌位,在訪問時加以區分不同的許可權。

原創文章,作者:YOILO,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/334033.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
YOILO的頭像YOILO
上一篇 2025-02-05 13:05
下一篇 2025-02-05 13:05

相關推薦

  • Deepin系統分區設置教程

    本教程將會詳細介紹Deepin系統如何進行分區設置,分享多種方式讓您了解如何規劃您的硬碟。 一、分區的基本知識 在進行Deepin系統分區設置之前,我們需要了解一些基本分區概念。 …

    編程 2025-04-29
  • Java任務下發回滾系統的設計與實現

    本文將介紹一個Java任務下發回滾系統的設計與實現。該系統可以用於執行複雜的任務,包括可回滾的任務,及時恢復任務失敗前的狀態。系統使用Java語言進行開發,可以支持多種類型的任務。…

    編程 2025-04-29
  • 如何在樹莓派上安裝Windows 7系統?

    隨著樹莓派的普及,許多用戶想在樹莓派上安裝Windows 7操作系統。 一、準備工作 在開始之前,需要準備以下材料: 1.樹莓派4B一台; 2.一張8GB以上的SD卡; 3.下載並…

    編程 2025-04-29
  • 分銷系統開發搭建

    本文主要介紹如何搭建一套完整的分銷系統,從需求分析、技術選型、開發、部署等方面進行說明。 一、需求分析 在進行分銷系統的開發之前,我們首先需要對系統進行需求分析。一般來說,分銷系統…

    編程 2025-04-29
  • 雲盤開源系統哪個好?

    本文將會介紹幾種目前主流的雲盤開源系統,從不同方面對它們做出分析比較,以此來確定哪個雲盤開源系統是最適合您的。 一、Seafile Seafile是一款非常出色的雲盤開源系統,它的…

    編程 2025-04-28
  • EulerOS V2R7:企業級開發首選系統

    本文將從多個方面為您介紹EulerOS V2R7,包括系統簡介、安全性、易用性、靈活性和應用場景等。 一、系統簡介 EulerOS V2R7是一個華為公司開發的企業級操作系統,該系…

    編程 2025-04-28
  • 基於Python點餐系統的實現

    在當前瞬息萬變的社會,餐飲行業也在加速發展,如何更好地為客戶提供更加便捷、高效、個性化的點餐服務,成為每個餐飲企業需要思考的問題。本文以基於Python的點餐系統為例,通過優化用戶…

    編程 2025-04-28
  • Ubuntu系統激活Python環境

    本文將從以下幾個方面詳細介紹在Ubuntu系統中如何激活Python環境: 一、安裝Python 在Ubuntu系統中默認已經預裝了Python解釋器,可以通過以下命令來檢查: $…

    編程 2025-04-28
  • 如何選擇MySQL伺服器文件許可權

    MySQL是一種流行的關係型資料庫管理系統。在安裝MySQL時,選擇正確的文件許可權是保證安全和性能的重要步驟。以下是一些指導您選擇正確許可權的建議。 一、許可權選擇 MySQL伺服器需…

    編程 2025-04-27
  • 如何在Windows系統下載和使用cygwin?

    如果你是一名Windows系統的開發者,你可能會遇到一個問題,那就是缺少Unix/Linux系統下常用的命令行工具,這時候,你可以使用cygwin來解決這個問題。 一、cygwin…

    編程 2025-04-27

發表回復

登錄後才能評論