跳至主内容
版本:0.81

Android权限

非官方测试版翻译

本页面由 PageTurner AI 翻译(测试版)。未经项目官方认可。 发现错误? 报告问题 →

PermissionsAndroid 提供了访问 Android M 新权限模型的接口。所谓的"普通"权限会在应用安装时默认授予(只要这些权限出现在 AndroidManifest.xml 中)。但"危险"权限需要弹窗提示,对于这类权限你应该使用此模块。

在 SDK 版本 23 之前的设备上,只要权限出现在清单文件中就会自动授予,因此 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,解析为布尔值,表示指定权限是否已被授予。

参数:

NameTypeRequiredDescription
permissionstringYesThe permission to check for.

request()

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

向用户请求启用权限,返回一个 Promise,解析为字符串值(见上方结果字符串),表示用户是允许、拒绝请求或选择不再被询问。

如果提供了 rationale 参数,此函数会检查操作系统是否需要显示解释权限用途的对话框 (https://developer.android.com/training/permissions/requesting.html#explain) 然后显示系统权限对话框。

参数:

NameTypeRequiredDescription
permissionstringYesThe permission to request.
rationaleobjectNoSee rationale below.

权限说明:

NameTypeRequiredDescription
titlestringYesThe title of the dialog.
messagestringYesThe message of the dialog.
buttonPositivestringYesThe text of the positive button.
buttonNegativestringNoThe text of the negative button.
buttonNeutralstringNoThe text of the neutral button.

requestMultiple()

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

在同一对话框中向用户请求启用多个权限,返回一个对象,其键为权限名称,值为字符串(见上方结果字符串),表示用户对每个权限的授权状态。

参数:

NameTypeRequiredDescription
permissionsarrayYesArray of permissions to request.