1. 程式人生 > >Android許可權--正常許可權和危險許可權

Android許可權--正常許可權和危險許可權

正常許可權和危險許可權

系統許可權分為幾個保護級別。需要了解的兩個最重要保護級別是正常許可權和危險許可權:

正常許可權涵蓋應用需要訪問其沙盒外部資料或資源,但對使用者隱私或其他應用操作風險很小的區域。例如,設定時區的許可權就是正常許可權。如果應用宣告其需要正常許可權,系統會自動向應用授予該許可權。如需當前正常許可權的完整列表,請參閱正常許可權。
危險許可權涵蓋應用需要涉及使用者隱私資訊的資料或資源,或者可能對使用者儲存的資料或其他應用的操作產生影響的區域。例如,能夠讀取使用者的聯絡人屬於危險許可權。如果應用宣告其需要危險許可權,則使用者必須明確嚮應用授予該許可權。
特殊許可權:有許多許可權其行為方式與正常許可權及危險許可權都不同。SYSTEM_ALERT_WINDOW 和 WRITE_SETTINGS 特別敏感,因此大多數應用不應該使用它們。如果某應用需要其中一種許可權,必須在清單中宣告該許可權,並且傳送請求使用者授權的 intent。系統將向用戶顯示詳細管理螢幕,以響應該 intent。如需瞭解有關如何請求這些許可權的詳情,請參閱 SYSTEM_ALERT_WINDOW 和 WRITE_SETTINGS 參考條目。

許可權組

所有危險的 Android 系統許可權都屬於許可權組。如果裝置執行的是 Android 6.0(API 級別 23),並且應用的 targetSdkVersion 是 23 或更高版本,則當用戶請求危險許可權時系統會發生以下行為:

如果應用請求其清單中列出的危險許可權,而應用目前在許可權組中沒有任何許可權,則系統會向用戶顯示一個對話方塊,描述應用要訪問的許可權組。對話方塊不描述該組內的具體許可權。例如,如果應用請求 READ_CONTACTS 許可權,系統對話方塊只說明該應用需要訪問裝置的聯絡資訊。如果使用者批准,系統將嚮應用授予其請求的許可權。
如果應用請求其清單中列出的危險許可權,而應用在同一許可權組中已有另一項危險許可權,則系統會立即授予該許可權,而無需與使用者進行任何互動。例如,如果某應用已經請求並且被授予了 READ_CONTACTS 許可權,然後它又請求 WRITE_CONTACTS,系統將立即授予該許可權。

任何許可權都可屬於一個許可權組,包括正常許可權和應用定義的許可權。但許可權組僅當權限危險時才影響使用者體驗。可以忽略正常許可權的許可權組。

如果裝置執行的是 Android 5.1(API 級別 22)或更低版本,並且應用的 targetSdkVersion 是 22 或更低版本,則系統會在安裝時要求使用者授予許可權。再次強調,系統只告訴使用者應用需要的許可權組,而不告知具體許可權。

表 1. 危險許可權和許可權組。
許可權組 許可權
CALENDAR

READ_CALENDAR

WRITE_CALENDAR

CAMERA

CAMERA

CONTACTS

READ_CONTACTS
WRITE_CONTACTS
GET_ACCOUNTS

LOCATION

ACCESS_FINE_LOCATION
ACCESS_COARSE_LOCATION

MICROPHONE

RECORD_AUDIO

PHONE

READ_PHONE_STATE
CALL_PHONE
READ_CALL_LOG
WRITE_CALL_LOG
ADD_VOICEMAIL
USE_SIP
PROCESS_OUTGOING_CALLS

SENSORS

BODY_SENSORS

SMS

SEND_SMS
RECEIVE_SMS
READ_SMS
RECEIVE_WAP_PUSH
RECEIVE_MMS

STORAGE

READ_EXTERNAL_STORAGE
WRITE_EXTERNAL_STORAGE