Permission App权限
App权限判断和提示,基于 uni-app插件修改。
平台
App | 小程序 | H5 |
---|---|---|
√ | × | × |
基本使用
js
import permission from '@/uni_modules/cook-uni/libs/permission.js'
// 获取相机权限示例
if(uni.$c.sys().platform === 'ios'){
const iosCameraPermission = permission.judgeIosPermission("camera");
if(iosCameraPermission === 1){
uni.$c.toast("已获取相机权限")
}
}else{
permission.requestAndroidPermission("android.permission.CAMERA").then(res=>{
if(res === 1) {
uni.$c.toast("已获取相机权限")
}
})
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
API
1、判断iOS设备上是否有某项权限
judgeIosPermission(permissionID)
返回值:
返回值为数字,包括“-1
被永久拒绝授权、0
未获取授权、1
已获取授权” 这3个数字。
permissionID 值域清单:
参数名 | 说明 |
---|---|
location | 位置 |
push | 推送(限iOS,注意Android上推送并不是一个权限) |
camera | 摄像头 |
photoLibrary | 相册 |
record | 麦克风 |
contact | 通讯录 |
calendar | 日历 |
memo | 备忘录 |
2、判断Android设备上是否有某项权限
requestAndroidPermission(permissionID)
注意
Android是动态权限,请求权限状态时会触发弹框询问是否赋权(如果已经同意或永久禁止则不会询问),所以必须使用异步方式来处理
返回值:
返回值为数字,包括“-1
被永久拒绝授权、0
未获取授权、1
已获取授权” 这3个数字。
permissionID 值域清单:
参数名 | 说明 |
---|---|
android.permission.ACCESS_FINE_LOCATION | 位置权限 |
android.permission.ACCESS_COARSE_LOCATION | 模糊位置权限(蓝牙\ble依赖) |
android.permission.CAMERA | 摄像头权限 |
android.permission.READ_EXTERNAL_STORAGE | 外部存储(含相册)读取权限 |
android.permission.WRITE_EXTERNAL_STORAGE | 外部存储(含相册)写入权限 |
android.permission.RECORD_AUDIO | 麦克风权限 |
android.permission.READ_CONTACTS | 通讯录读取权限 |
android.permission.WRITE_CONTACTS | 通讯录写入权限 |
android.permission.READ_CALENDAR | 日历读取权限 |
android.permission.WRITE_CALENDAR | 日历写入权限 |
android.permission.READ_SMS | 短信读取权限 |
android.permission.SEND_SMS | 短信发送权限 |
android.permission.RECEIVE_SMS | 接收新短信权限 |
android.permission.READ_PHONE_STATE | 获取手机识别码等信息的权限 |
android.permission.CALL_PHONE | 拨打电话权限 |
android.permission.READ_CALL_LOG | 获取通话记录权限 |
这里支持Android所有android.permission的值,更多值可参考Android开发文档。
3、打开当前App的权限设置界面,可用于引导用户赋权
gotoAppPermissionSetting()
不区分iOS和Android
iOS上如果没有调用过的权限,不会出现在权限设置界面(所以初次调用judgeIosPermission()
会返回1)。
Android碎片化严重,直接打开了App的设置界面。
4、获取当前手机是否开启或关闭了定位服务
checkSystemEnableLocation()
不区分iOS和Android
返回值:
true
开启,false
关闭
扩展阅读
本模块使用Native.js
: