Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android Permission整理

Android Permission整理

編輯:關於Android編程

1、權限概述

Android 通過在每台設備上實施了基於權限的安全策略來處理安全問題,采用權限來限制安裝應用程序的能力。當某個權限與某個操作和資源對象綁定在一起,我們必須獲得這個權限才能在對象上執行操作。由於Android設計本身就是為Android開發人員著想,所以一切權限許可權由用戶決定而不是手機制造商和平台提供商,但這不得不帶來了開發者濫用權限,黑客通過權限來進行惡意行為的風險,所以作為靜態分析一個App是否為惡意軟件的第一道關,獲取並了解Android Permission權限意義是十分重大的。

2、權限策略

Android 框架提供一套默認的權限存儲在android.anifest.permission類中,同時也允許我們自己定義新的權限。我們在寫應用程序時聲明權限,程序安裝時新權限被引入系統,權限授權在應用程序被安裝時執行。當在設備上安裝應用程序時,程序將請求完成任務必需的權限集合,被請求的權限列單顯示在設備屏幕上以待用戶審查只有用戶同意授權後,程序才會被安裝,該應用程序獲得所有被請求的權限。所以Android系統實施的主要安全准則是應用程序只有得到權限許可後,才能執行可能會影響到系統其它部分的操作。每個權限被定義成一個字符串,用來傳達權限以執行某個特殊的操作。所有權限可以分為兩個類別:一種是執行程序時被應用程序所請求的權限,一種是應用程序的組件之間通信時被其它組件請求的權限。開發者通過在AndroidManifest.xml文件中編寫權限標簽來定義以上兩種類別的權限策略。

3、權限聲明

應用程序可以用一個元素來聲明權限, 用於限制訪問特定組件或應用程序 在安裝程序時, 這個已聲明的權限被加入到系統中,具體可以參看下文的Android自定義權限。

4、權限請求

應用程序列出所有需要用來完成任務的權限,分別用 元素標識這些權限。在程序安裝時被請求,列表顯示在屏幕上用戶要麼同意安裝,要麼中止安裝。同意安裝則意味著授權所有被請求的權限。

5、獲取權限

獲取權限,是我們靜態分析某個App的第一關,通過知道App所具有的權限,我們一般能夠基本知道該App或許會有哪些行為。目前已有多個工具可以靜態檢測Android app所具有的Permissions,這類工具有:aapt、apktool、androguard等等。

6、Android自定義權限

在android系統的安全模型中,應用程序在默認的情況下不可以執行任何對其他應用程序,系統或者用戶帶來負面影響的操作。如果應用需要執行某些操作,就需要聲明使用這個操作對應的權限(在manifest文件中 添加標記)。
android 系統提供了一系列這樣的權限,具體可以查看android 權限,另外,android系統在新的版本中會增加一些permission,可以查看android 版本信息。
當然,app也可以自定義屬於自己的permission 或屬於開發者使用的同一個簽名的permission。定義一個permission 就是在menifest文件中添加一個permission標簽。

  
各屬性詳解:
android:description:對權限的描述,一般是兩句話,第一句話描述這個權限所針對的操作,第二句話告訴用戶授予app這個權限會帶來的後果;
android:label:對權限的一個簡短描述;
android:name:權限的唯一標識,一般都是使用 報名加權限名;
android:permissionGroup:權限所屬權限組的名稱;
android:protectionLevel:權限的等級,包含以下幾個:
normal是最低的等級,聲明次權限的app,系統會默認授予次權限,不會提示用戶;
dangerous權限對應的操作有安全風險,系統在安裝聲明此類權限的app時會提示用戶;
signature權限表明的操作只針對使用同一個證書簽名的app開放;
signatureOrSystem與signature類似,只是增加了rom中自帶的app的聲明;
其中android:name屬性是必須的,其他的可選,未寫的系統會指定默認值。

7、Android權限一覽

在Android的設計中,資源的訪問或者網絡連接,要得到這些服務都需要聲明其訪問權限,否則將無法正常工作。在Android中這樣的權限有很多種,這裡將各類訪問權限一一羅列出來,供大家使用時參考之用。

權限 描述 android.permission.EXPAND_STATUS_BAR 允許一個程序擴展收縮在狀態欄,android開發網提示應該是一個類似Windows Mobile中的托盤程序 android.permission.FACTORY_TEST 作為一個工廠測試程序,運行在root用戶 android.permission.FLASHLIGHT 訪問閃光燈,android開發網提示HTC Dream不包含閃光燈 android.permission.FORCE_BACK 允許程序強行一個後退操作是否在頂層activities android.permission.FOTA_UPDATE 暫時不了解這是做什麼使用的,android開發網分析可能是一個預留權限 android.permission.GET_ACCOUNTS 訪問一個帳戶列表在Accounts Service中 android.permission.GET_PACKAGE_SIZE 允許一個程序獲取任何package占用空間容量 android.permission.GET_TASKS 允許一個程序獲取信息有關當前或最近運行的任務,一個縮略的任務狀態,是否活動等等 android.permission.HARDWARE_TEST 允許訪問硬件 android.permission.INJECT_EVENTS 允許一個程序截獲用戶事件如按鍵、觸摸、軌跡球等等到一個時間流 android.permission.INSTALL_PACKAGES 允許一個程序安裝packages android.permission.INTERNAL_SYSTEM_WINDOW 允許打開窗口使用系統用戶界面 android.permission.ACCESS_CHECKIN_PROPERTIES 允許讀寫訪問“properties”表在checkin數據庫中,改值可以修改上傳 android.permission.ACCESS_COARSE_LOCATION 允許一個程序訪問CellID或WiFi熱點來獲取粗略的位置 android.permission.ACCESS_FINE_LOCATION 允許一個程序訪問精良位置(如GPS) android.permission.WRITE_CONTACTS 允許程序寫入但不讀取用戶聯系人數據 android.permission.WRITE_GSERVICES 允許程序修改Google服務地圖 android.permission.WRITE_OWNER_DATA 允許一個程序寫入但不讀取所有者數據 android.permission.WRITE_SETTINGS 允許程序讀取或寫入系統設置 android.permission.WRITE_SMS 允許程序寫短信 android.permission.WRITE_SYNC_SETTINGS 允許程序寫入同步設置 android.permission.ACCESS_LOCATION_EXTRA_COMMANDS 允許應用程序訪問額外的位置提供命令 android.permission.ACCESS_MOCK_LOCATION 允許程序創建模擬位置提供用於測試 android.permission.ACCESS_NETWORK_STATE 允許程序訪問有關GSM網絡信息 android.permission.ACCESS_SURFACE_FLINGER 允許程序使用SurfaceFlinger底層特性 android.permission.ACCESS_WIFI_STATE 允許程序訪問Wi-Fi網絡狀態信息 android.permission.ADD_SYSTEM_SERVICE 允許程序發布系統級服務 android.permission.BATTERY_STATS 允許程序更新手機電池統計信息 android.permission.BLUETOOTH 允許程序連接到已配對的藍牙設備 android.permission.BLUETOOTH_ADMIN 允許程序發現和配對藍牙設備 android.permission.BROADCAST_PACKAGE_REMOVED 允許程序廣播一個提示消息在一個應用程序包已經移除後 android.permission.BROADCAST_STICKY 允許一個程序廣播常用intents android.permission.CALL_PHONE 允許一個程序初始化一個電話撥號不需通過撥號用戶界面需要用戶確認 android.permission.DELETE_CACHE_FILES 允許程序刪除緩存文件 android.permission.DELETE_PACKAGES 允許一個程序刪除包 android.permission.DEVICE_POWER 允許訪問底層電源管理 android.permission.DIAGNOSTIC 允許程序RW診斷資源 android.permission.DISABLE_KEYGUARD 允許程序禁用鍵盤鎖 android.permission.DUMP 允許程序返回狀態抓取信息從系統服務 android.permission.CALL_PRIVILEGED 允許一個程序撥打任何號碼,包含緊急號碼無需通過撥號用戶界面需要用戶確認 android.permission.CAMERA 請求訪問使用照相設備 android.permission.CHANGE_COMPONENT_ENABLED_STATE 允許一個程序是否改變一個組件或其他的啟用或禁用 android.permission.CHANGE_CONFIGURATION 允許一個程序修改當前設置,如本地化 android.permission.CHANGE_NETWORK_STATE 允許程序改變網絡連接狀態 android.permission.CHANGE_WIFI_STATE 允許程序改變Wi-Fi連接狀態 android.permission.CLEAR_APP_CACHE 允許一個程序清楚緩存從所有安裝的程序在設備中 android.permission.CLEAR_APP_USER_DATA 允許一個程序清除用戶設置 android.permission.CONTROL_LOCATION_UPDATES 允許啟用禁止位置更新提示從無線模塊 android.permission.REBOOT 請求能夠重新啟動設備 android.permission.RECEIVE_BOOT_COMPLETED 允許一個程序接收到ACTION_BOOT_COMPLETED廣播在系統完成啟動 android.permission.RECEIVE_MMS 允許一個程序監控將收到MMS彩信,記錄或處理 android.permission.RECEIVE_SMS 允許程序監控一個將收到短信息,記錄或處理 android.permission.RECEIVE_WAP_PUSH 允許程序監控將收到WAP PUSH信息 android.permission.RECORD_AUDIO 允許程序錄制音頻 android.permission.REORDER_TASKS 允許程序改變Z軸排列任務 android.permission.RESTART_PACKAGES 允許程序重新啟動其他程序 android.permission.SEND_SMS 允許程序發送SMS短信 android.permission.INTERNET 允許程序打開網絡套接字 android.permission.MANAGE_APP_TOKENS 允許程序管理(創建、催後、 z-order默認向z軸推移)程序引用在窗口管理器中 android.permission.MASTER_CLEAR 目前還沒有明確的解釋,android開發網分析可能是清除一切數據,類似硬格機 android.permission.MODIFY_AUDIO_SETTINGS 允許程序修改全局音頻設置 android.permission.MODIFY_PHONE_STATE 允許修改話機狀態,如電源,人機接口等 android.permission.MOUNT_UNMOUNT_FILESYSTEMS 允許掛載和反掛載文件系統可移動存儲 android.permission.PERSISTENT_ACTIVITY允許一個程序設置他的activities顯示   android.permission.PROCESS_OUTGOING_CALLS 允許程序監視、修改有關播出電話 android.permission.READ_CALENDAR 允許程序讀取用戶日歷數據 android.permission.READ_CONTACTS 允許程序讀取用戶聯系人數據 android.permission.READ_FRAME_BUFFER 允許程序屏幕波或和更多常規的訪問幀緩沖數據 android.permission.READ_INPUT_STATE 允許程序返回當前按鍵狀態 android.permission.READ_LOGS 允許程序讀取底層系統日志文件 android.permission.READ_OWNER_DATA 允許程序讀取所有者數據 android.permission.READ_SMS 允許程序讀取短信息 android.permission.READ_SYNC_SETTINGS 允許程序讀取同步設置 android.permission.READ_SYNC_STATS 允許程序讀取同步狀態 android.permission.SET_ACTIVITY_WATCHER 允許程序監控或控制activities已經啟動全局系統中 android.permission.SET_ALWAYS_FINISH 允許程序控制是否活動間接完成在處於後台時 android.permission.SET_ANIMATION_SCALE 修改全局信息比例 android.permission.SET_DEBUG_APP 配置一個程序用於調試 android.permission.SET_ORIENTATION 允許底層訪問設置屏幕方向和實際旋轉 android.permission.SET_PREFERRED_APPLICATIONS 允許一個程序修改列表參數PackageManager.addPackageToPreferred()和PackageManager.removePackageFromPreferred()方法 android.permission.SET_PROCESS_FOREGROUND 允許程序當前運行程序強行到前台 android.permission.SET_PROCESS_LIMIT 允許設置最大的運行進程數量 android.permission.SET_TIME_ZONE 允許程序設置時間區域 android.permission.SET_WALLPAPER 允許程序設置壁紙 android.permission.SET_WALLPAPER_HINTS 允許程序設置壁紙hits android.permission.SIGNAL_PERSISTENT_PROCESSES 允許程序請求發送信號到所有顯示的進程中 android.permission.STATUS_BAR 允許程序打開、關閉或禁用狀態欄及圖標 android.permission.SUBSCRIBED_FEEDS_READ 允許一個程序訪問訂閱RSS Feed內容提供 android.permission.SUBSCRIBED_FEEDS_WRITE 系統暫時保留改設置 android.permission.SYSTEM_ALERT_WINDOW 允許一個程序打開窗口使用TYPE_SYSTEM_ALERT,顯示在其他所有程序的頂層 android.permission.VIBRATE 允許訪問振動設備 android.permission.WAKE_LOCK 允許使用PowerManager的 WakeLocks保持進程在休眠時從屏幕消失 android.permission.WRITE_APN_SETTINGS 允許程序寫入API設置 android.permission.WRITE_CALENDAR 允許一個程序寫入但不讀取用戶日歷數據
  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved