android permissions,PermissionsAndroid

仅适用于非沙盒项目

The following section only applies to projects with native code exposed. If you are using the managed expo-cli workflow, see the guide on Permissions in the Expo documentation for the appropriate alternative.

PermissionsAndroid 可以访问 Android M(也就是 6.0)开始提供的权限模型。有一些权限写在AndroidManifest.xml就可以在安装时自动获得,但有一些“危险”的权限则需要弹出提示框供用户选择。本 API 即用于后一种情形。

在低于 Android 6.0 的设备上,权限只要写在AndroidManifest.xml里就会自动获得,此情形下check会始终返回true和而request方法将始终解析为PermissionsAndroid.RESULTS.GRANTED。

如果用户之前拒绝过你的某项权限请求,那么系统会建议你显示一个为什么需要这个权限的“详细解释”(rationale参数)。如果用户之前拒绝过,那么当你再次申请的时候,弹出的就可能不是原先的申请信息,而是rationale参数里提供的进一步解释。

示例#

函数式组件

Class 组件

需要提示用户的权限列表#

需要提示用户的权限都以常量形式列在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_BACKGROUND_LOCATION: 'android.permission.ACCESS_BACKGROUND_LOCATION`

ACCESS_FINE_LOCATION: 'android.permission.ACCESS_FINE_LOCATION'

ACCESS_COARSE_LOCATION: 'android.permission.ACCESS_COARSE_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'

请求权限的返回值#

返回值都以常量形式记录在PermissionsAndroid.RESULTS中:GRANTED: 'granted', 表示用户已授权

DENIED: 'denied', 表示用户已拒绝

NEVER_ASK_AGAIN: 'never_ask_again',表示用户已拒绝,且不愿被再次询问。

文档#

方法#

constructor()#

constructor();Copy

check()#

check(permission);Copy

检查某项权限是否经过用户授权。返回一个 promise,解析为布尔值。

参数:名称类型必需说明permissionstring是要检查的权限

request()#

request(permission,[rationale]);Copy

弹出提示框向用户请求某项权限。返回一个 promise,最终值为上文所说的PermissionsAndroid.RESULTS。

如果提供了rationale参数,则此方法会和系统协商,是弹出系统内置的权限申请对话框,还是显示rationale中的信息以向用户进行解释。具体原理请参阅 android 官方文档(https://developer.android.com/training/permissions/requesting.html#explain)。

参数:名称类型必需说明permissionstring是要请求的权限

rationaleobject否见下面的rationale

Rationale:名称类型必需说明titlestring是对话框的标题。

messagestring是对话框的正文。

buttonPositivestring是同意按钮的文本。

buttonNegativestring否拒绝按钮的文本。

buttonNeutralstring否跳过按钮的文本。

requestMultiple()#

requestMultiple(permissions);Copy

在一个弹出框中向用户请求多个权限。返回值为一个 object,key 为各权限名称,值为PermissionsAndroid.RESULTS。

参数:名称类型必需说明permissionsarrayYes要申请的权限的数组

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值