更新记录
1.0.6(2023-06-12)
增加跳转电池设置页面函数
1.0.5(2023-04-21)
解决部分手机请求打开蓝牙失败的bug
1.0.4(2023-04-04)
权限请求逻辑优化、删除非必要日志打印
查看更多平台兼容性
Android | Android CPU类型 | iOS |
---|---|---|
适用版本区间:5.0 - 11.0 | armeabi-v7a:支持,arm64-v8a:支持,x86:未测试 | × |
原生插件通用使用流程:
- 购买插件,选择该插件绑定的项目。
- 在HBuilderX里找到项目,在manifest的app原生插件配置中勾选模块,如需要填写参数则参考插件作者的文档添加。
- 根据插件作者的提供的文档开发代码,在代码中引用插件,调用插件功能。
- 打包自定义基座,选择插件,得到自定义基座,然后运行时选择自定义基座,进行log输出测试。
- 开发完毕后正式云打包
付费原生插件目前不支持离线打包。
Android 离线打包原生插件另见文档 https://nativesupport.dcloud.net.cn/NativePlugin/offline_package/android
iOS 离线打包原生插件另见文档 https://nativesupport.dcloud.net.cn/NativePlugin/offline_package/ios
注意事项:使用HBuilderX2.7.14以下版本,如果同一插件且同一appid下购买并绑定了多个包名,提交云打包界面提示包名绑定不一致时,需要在HBuilderX项目中manifest.json->“App原生插件配置”->”云端插件“列表中删除该插件重新选择
安卓权限请求原生插件
- 支持Android平台使用
- 函数说明
序号 | 函数名称 | 函数说明 |
---|---|---|
1 | requestPermission(jsCallback, String permissionType, String mode, String refuseHintText) | 统一权限请求函数,根据参数permissionType取值请求相应的权限 |
2 | isCameraPermission(callback,String mode, String refuseHintText) | 相机权限 |
3 | isExternalStoragePermission(callback, String mode, String refuseHintText) | 外部存储权限 |
4 | isLocationPermission(callback, String mode, String refuseHintText) | 位置权限 |
5 | isRecordAudioPermission(callback, String mode, String refuseHintText) | 录音(麦克风)权限 |
6 | isCallPhonePermission(callback, String mode, String refuseHintText) | 拨打电话权限 |
7 | isReadContactsPermission(callback, String mode, String refuseHintText) | 读取通讯录权限 |
8 | isAlertWindowPermission(callback, String mode, String refuseHintText) | 悬浮窗权限 |
9 | requestOpenBluetooth(callback, String mode, String refuseHintText) | 请求开启蓝牙 |
10 | bluetoothIsEnabled(callback, mode) | 蓝牙是否开启 |
11 | isNotificationEnabled(callback, mode) | 是否开启了系统通知权限 |
12 | toSystemNoticeSettings(pkgName,callback, String mode, String refuseHintText) | 跳转系统通知设置页面 |
13 | openAppSetting() | 跳转应用详情设置页面 |
14 | openBatterySetting(callback, int type) | 打开电池设置页面,type取值0、1、2分别对应不同的页面 |
-
统一权限请求函数requestPermission()说明:
(1)callback为回调函数,即原生插件返回结果到uniapp,返回结果为true和false,true表示有权限,false表示无权限。 (1)permissionType为请求的权限类型,目前可选参数详见下方permissionType取值(CAMERA,EXTERNAL_STORAGE,LOCATION,RECORD_AUDIO, CALL_PHONE,READ_CONTACTS,ALERT_WINDOW,OPEN_BLUETOOTH,BLUETOOTH_OPENED, NOTIFICATION_OPENED,SETTING_NOTIFICATION,APP_INFO) (3)mode取值 00-需要跳转应用详情提示弹窗,01-不需要弹窗,该值需传递字符串,默认为"00"。 (4)refuseHintText为权限被禁止时弹窗提示文案,即mode取值“00”时弹窗上的提示内容, 需要注意的是【refuseHintText参数传值时,mode也必须传值,mode的值可为null或空字符串""】, refuseHintText不传值且mode值为"00"时,则使用默认文案。
-
permissionType取值
序号 可选值 说明 1 CAMERA 请求相机权限 2 EXTERNAL_STORAGE 请求外部存储权限 3 LOCATION 请求定位权限 4 RECORD_AUDIO 请求录音/麦克风权限 5 CALL_PHONE 请求拨打电话权限 6 READ_CONTACTS 请求读取联系人信息权限 7 ALERT_WINDOW 请求悬浮窗权限 8 OPEN_BLUETOOTH 请求打开蓝牙权限 9 BLUETOOTH_OPENED 蓝牙是否开启 10 NOTIFICATION_OPENED 系统通知权限是否开启 11 SETTING_NOTIFICATION 跳转系统通知设置页面 12 APP_INFO 跳转应用详情设置页面 -
其余函数参数说明:
(1)callback为回调函数,即原生插件返回结果到uniapp,返回结果为true和false,true表示有权限,false表示无权限。 (2)mode取值 00-需要跳转应用详情提示弹窗,01-不需要弹窗,该值需传递字符串,默认为"00"。 (3)refuseHintText为权限被禁止时弹窗提示文案,即mode取值“00”时弹窗上的提示内容, 需要注意的是【refuseHintText参数传值时,mode也必须传值,mode的值可为null或空字符串""】, refuseHintText不传值且mode值为"00"时,则使用默认文案。 (4)第11个函数toSystemNoticeSettings中的pkgName为你的安卓应用包名。
-
使用示例
<template> <view style="display: flex;flex-direction: column;"> <button type="default" @click="requestPermission()">统一权限请求函数</button> <button type="default" @click="camera()">相机权限</button> <button type="default" @click="externalStorage()">存储权限</button> <button type="default" @click="location()">位置权限</button> <button type="default" @click="audio()">麦克风权限</button> <button type="default" @click="callPhone()">拨打电话权限</button> <button type="default" @click="readContacts()">获取联系人权限</button> <button type="default" @click="alertWindow()">悬浮窗权限</button> <button type="default" @click="openBluetooth()">打开蓝牙</button> <button type="default" @click="bluetoothIsOpen()">蓝牙是否开启</button> <button type="default" @click="notifyIsOpen()">系统通知是否打开</button> <button type="default" @click="toNotifySetting()">跳转系统通知设置页面</button> <button type="default" @click="toAppInfoSetting()">跳转应用详情设置页面</button> <button type="default" @click="toBatterySetting(0)">打开电池页面1</button> <button type="default" @click="toBatterySetting(1)">打开电池页面2</button> <button type="default" @click="toBatterySetting(2)">打开电池页面3</button> </view> </template> <script> const module = uni.requireNativePlugin("jushi-permission") export default { data() { return { } }, methods: { requestPermission(){ //module.requestPermission(callback,permissionType,mode,refuseHintText)函数 //1、callback为回调函数 //2、permissionType为请求的权限类型,目前可选参数有(CAMERA,EXTERNAL_STORAGE,LOCATION,RECORD_AUDIO, // CALL_PHONE,READ_CONTACTS,ALERT_WINDOW,OPEN_BLUETOOTH,BLUETOOTH_OPENED, // NOTIFICATION_OPENED,SETTING_NOTIFICATION,APP_INFO) //3、mode取值:00-需要跳转应用详情提示弹窗,01-不需要弹窗 ,默认为00 //4、refuseHintText为用户拒绝授权时的提示文案,不传时使用默认的 module.requestPermission(res => { console.log('is camera permission = ' + res) },'EXTERNAL_STORAGE',"01","该功能需要存储权限") }, camera() { //相机权限请求 module.isCameraPermission(res => { console.log('is camera permission = ' + res) },"01") }, externalStorage(){//存储 module.isExternalStoragePermission(res => { console.log('is external storage permission = ' + res) },"","该功能需要存储权限") }, location(){//位置 module.isLocationPermission(res => { console.log('is location permission = ' + res) }) }, audio() { //麦克风权限请求 module.isRecordAudioPermission(res => { console.log('is audio permission = ' + res) }) }, callPhone(){//拨打电话 module.isCallPhonePermission(res => { console.log('is call phone permission = ' + res) }) }, readContacts(){//获取联系人权限 module.isReadContactsPermission(res => { console.log('is call phone permission = ' + res) }) }, alertWindow(){//悬浮窗权限 module.isAlertWindowPermission(res => { console.log('is alert window permission = ' + res) }) }, openBluetooth(){//打开蓝牙 module.requestOpenBluetooth(res => { console.log('is open bluetooth = ' + res) }) }, bluetoothIsOpen(){//蓝牙是否打开 module.bluetoothIsEnabled(res => { console.log('bluetooth is open = ' + res) }) }, notifyIsOpen(){ module.isNotificationEnabled(res => { console.log('notify is open = ' + res) }) }, toNotifySetting(){ module.toSystemNoticeSettings('com.test.exit',res => { console.log('notify is open = ' + res) }) }, toAppInfoSetting(){ module.openAppSetting() }, toBatterySetting(type){ module.openBatterySetting(res=>{ console.log('跳转电池页面结果:'+res) },type) } } } </script> <style> button { margin-top: 20rpx; margin-bottom: 20rpx; } </style>
-
示例应用下载
其它插件
安卓原生插件
-
UTS插件
-
前端插件