跳至主内容

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.