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()
static check(permission: Permission): Promise<boolean>;
返回一个 Promise,解析为布尔值,表示指定权限是否已被授予。
参数:
| Name | Type | Required | Description |
|---|---|---|---|
| permission | string | Yes | The permission to check for. |
request()
static request(
permission: Permission,
rationale?: Rationale,
): Promise<PermissionStatus>;
向用户请求启用权限,返回一个 Promise,解析为字符串值(见上方结果字符串),表示用户是允许、拒绝请求或选择不再被询问。
如果提供了 rationale 参数,此函数会检查操作系统是否需要显示解释权限用途的对话框 (https://developer.android.com/training/permissions/requesting.html#explain) 然后显示系统权限对话框。
参数:
| Name | Type | Required | Description |
|---|---|---|---|
| permission | string | Yes | The permission to request. |
| rationale | object | No | See rationale below. |
权限说明:
| Name | Type | Required | Description |
|---|---|---|---|
| title | string | Yes | The title of the dialog. |
| message | string | Yes | The message of the dialog. |
| buttonPositive | string | Yes | The text of the positive button. |
| buttonNegative | string | No | The text of the negative button. |
| buttonNeutral | string | No | The text of the neutral button. |
requestMultiple()
static requestMultiple(
permissions: Permission[],
): Promise<{[key in Permission]: PermissionStatus}>;
在同一对话框中向用户请求启用多个权限,返回一个对象,其键为权限名称,值为字符串(见上方结果字符串),表示用户对每个权限的授权状态。
参数:
| Name | Type | Required | Description |
|---|---|---|---|
| permissions | array | Yes | Array of permissions to request. |