PermissionsAndroid
PermissionsAndroid
提供 Android M 全新權限模型的存取權限。所謂的「一般」權限在應用程式安裝時預設授予,只要它們出現在 AndroidManifest.xml
中即可。但是,「危險」權限需要對話框提示。您應該針對這些權限使用此模組。
在 SDK 版本 23 之前的裝置上,如果權限出現在 manifest 中,則會自動授予權限,因此 check
應始終解析為 true
,而 request
應始終解析為 PermissionsAndroid.RESULTS.GRANTED
。
如果使用者先前已關閉您請求的權限,則作業系統會建議您的應用程式顯示需要該權限的理由。選用的 rationale
參數僅在必要時顯示對話框提示 - 否則將顯示正常的權限提示。
範例
需要提示使用者的權限
以常數形式在 PermissionsAndroid.PERMISSIONS
下提供
READ_CALENDAR
: 'android.permission.READ_CALENDAR'WRITE_CALENDAR
: 'android.permission.WRITE_CALENDAR'CAMERA
: 'android.permission.CAMERA'READ_CONTACTS
: 'android.permission.READ_CONTACTS'WRITE_CONTACTS
: 'android.permission.WRITE_CONTACTS'GET_ACCOUNTS
: 'android.permission.GET_ACCOUNTS'ACCESS_FINE_LOCATION
: 'android.permission.ACCESS_FINE_LOCATION'ACCESS_COARSE_LOCATION
: 'android.permission.ACCESS_COARSE_LOCATION'ACCESS_BACKGROUND_LOCATION
: 'android.permission.ACCESS_BACKGROUND_LOCATION'RECORD_AUDIO
: 'android.permission.RECORD_AUDIO'READ_PHONE_STATE
: 'android.permission.READ_PHONE_STATE'CALL_PHONE
: 'android.permission.CALL_PHONE'READ_CALL_LOG
: 'android.permission.READ_CALL_LOG'WRITE_CALL_LOG
: 'android.permission.WRITE_CALL_LOG'ADD_VOICEMAIL
: 'com.android.voicemail.permission.ADD_VOICEMAIL'USE_SIP
: 'android.permission.USE_SIP'PROCESS_OUTGOING_CALLS
: 'android.permission.PROCESS_OUTGOING_CALLS'BODY_SENSORS
: 'android.permission.BODY_SENSORS'SEND_SMS
: 'android.permission.SEND_SMS'RECEIVE_SMS
: 'android.permission.RECEIVE_SMS'READ_SMS
: 'android.permission.READ_SMS'RECEIVE_WAP_PUSH
: 'android.permission.RECEIVE_WAP_PUSH'RECEIVE_MMS
: 'android.permission.RECEIVE_MMS'READ_EXTERNAL_STORAGE
: 'android.permission.READ_EXTERNAL_STORAGE'WRITE_EXTERNAL_STORAGE
: 'android.permission.WRITE_EXTERNAL_STORAGE'BLUETOOTH_CONNECT
: 'android.permission.BLUETOOTH_CONNECT'BLUETOOTH_SCAN
: 'android.permission.BLUETOOTH_SCAN'BLUETOOTH_ADVERTISE
: 'android.permission.BLUETOOTH_ADVERTISE'ACCESS_MEDIA_LOCATION
: 'android.permission.ACCESS_MEDIA_LOCATION'ACCEPT_HANDOVER
: 'android.permission.ACCEPT_HANDOVER'ACTIVITY_RECOGNITION
: 'android.permission.ACTIVITY_RECOGNITION'ANSWER_PHONE_CALLS
: 'android.permission.ANSWER_PHONE_CALLS'READ_PHONE_NUMBERS
: 'android.permission.READ_PHONE_NUMBERS'UWB_RANGING
: 'android.permission.UWB_RANGING'BODY_SENSORS_BACKGROUND
: 'android.permission.BODY_SENSORS_BACKGROUND'READ_MEDIA_IMAGES
: 'android.permission.READ_MEDIA_IMAGES'READ_MEDIA_VIDEO
: 'android.permission.READ_MEDIA_VIDEO'READ_MEDIA_AUDIO
: 'android.permission.READ_MEDIA_AUDIO'POST_NOTIFICATIONS
: 'android.permission.POST_NOTIFICATIONS'NEARBY_WIFI_DEVICES
: 'android.permission.NEARBY_WIFI_DEVICES'READ_VOICEMAIL
: 'com.android.voicemail.permission.READ_VOICEMAIL',WRITE_VOICEMAIL
: 'com.android.voicemail.permission.WRITE_VOICEMAIL',
請求權限的結果字串
以常數形式在 PermissionsAndroid.RESULTS
下提供
GRANTED
: 'granted'DENIED
: 'denied'NEVER_ASK_AGAIN
: 'never_ask_again'
參考
方法
check()
static check(permission: Permission): Promise<boolean>;
返回一個 Promise,解析為布林值,表示指定的權限是否已授予。
參數
名稱 | 類型 | 必填 | 描述 |
---|---|---|---|
permission | string | 是 | 要檢查的權限。 |
request()
static request(
permission: Permission,
rationale?: Rationale,
): Promise<PermissionStatus>;
提示使用者啟用權限,並返回一個 Promise,解析為字串值(請參閱上面的結果字串),表示使用者是否允許或拒絕請求,或者是否不想再次被詢問。
如果提供了 rationale
,此函數會與作業系統檢查是否需要顯示對話框,說明為什麼需要此權限 (https://developer.android.com/training/permissions/requesting.html#explain) 然後顯示系統權限對話框。
參數
名稱 | 類型 | 必填 | 描述 |
---|---|---|---|
permission | string | 是 | 要請求的權限。 |
rationale | object | 否 | 請參閱下方的 rationale 。 |
Rationale
名稱 | 類型 | 必填 | 描述 |
---|---|---|---|
title | string | 是 | 對話框的標題。 |
message | string | 是 | 對話框的訊息。 |
buttonPositive | string | 是 | 肯定按鈕的文字。 |
buttonNegative | string | 否 | 否定按鈕的文字。 |
buttonNeutral | string | 否 | 中性按鈕的文字。 |
requestMultiple()
static requestMultiple(
permissions: Permission[],
): Promise<{[key in Permission]: PermissionStatus}>;
提示使用者在同一個對話框中啟用多個權限,並返回一個物件,其中權限作為鍵,字串作為值(請參閱上面的結果字串),表示使用者是否允許或拒絕請求,或者是否不想再次被詢問。
參數
名稱 | 類型 | 必填 | 描述 |
---|---|---|---|
permissions | array | 是 | 要請求的權限陣列。 |