跳到主要內容

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()

tsx
static check(permission: Permission): Promise<boolean>;

返回一個 Promise,解析為布林值,表示指定的權限是否已授予。

參數

名稱類型必填描述
permissionstring要檢查的權限。

request()

tsx
static request(
permission: Permission,
rationale?: Rationale,
): Promise<PermissionStatus>;

提示使用者啟用權限,並返回一個 Promise,解析為字串值(請參閱上面的結果字串),表示使用者是否允許或拒絕請求,或者是否不想再次被詢問。

如果提供了 rationale,此函數會與作業系統檢查是否需要顯示對話框,說明為什麼需要此權限 (https://developer.android.com/training/permissions/requesting.html#explain) 然後顯示系統權限對話框。

參數

名稱類型必填描述
permissionstring要請求的權限。
rationaleobject請參閱下方的 rationale

Rationale

名稱類型必填描述
titlestring對話框的標題。
messagestring對話框的訊息。
buttonPositivestring肯定按鈕的文字。
buttonNegativestring否定按鈕的文字。
buttonNeutralstring中性按鈕的文字。

requestMultiple()

tsx
static requestMultiple(
permissions: Permission[],
): Promise<{[key in Permission]: PermissionStatus}>;

提示使用者在同一個對話框中啟用多個權限,並返回一個物件,其中權限作為鍵,字串作為值(請參閱上面的結果字串),表示使用者是否允許或拒絕請求,或者是否不想再次被詢問。

參數

名稱類型必填描述
permissionsarray要請求的權限陣列。