更新记录

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:未测试 ×

原生插件通用使用流程:

  1. 购买插件,选择该插件绑定的项目。
  2. 在HBuilderX里找到项目,在manifest的app原生插件配置中勾选模块,如需要填写参数则参考插件作者的文档添加。
  3. 根据插件作者的提供的文档开发代码,在代码中引用插件,调用插件功能。
  4. 打包自定义基座,选择插件,得到自定义基座,然后运行时选择自定义基座,进行log输出测试。
  5. 开发完毕后正式云打包

付费原生插件目前不支持离线打包。
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>
  • 示例应用下载

    扫码下载体验

    其它插件

    安卓原生插件

  • 文件在线预览

  • 银联支付线上收银台(通用版) 封装

  • 阿里云RTC音视频通话

  • 权限请求

  • 文字转语音

  • MQTT连接

  • 获取手机通讯录联系人

  • 快捷工具悬浮窗

  • 日历日程事件

  • 获取本地音频文件信息

  • 根据经纬度获取位置信息

  • WebSocket连接

  • 高德地图封装安卓原生地图扩展组件

  • 使用ECharts封装的安卓原生扩展组件

  • 给图片添加水印

  • 自定义通知栏通知

    UTS插件

  • 安卓权限请求UTS插件

  • 安卓文字转语音UTS插件

  • 安卓获取音频文件UTS插件

    前端插件

  • ECharts封装全端通用组件

  • 图片添加水印,支持微信小程序、H5

  • 手写签名、电子签名组件

隐私、权限声明

1. 本插件需要申请的系统权限列表:

<uses-permission android:name="android.permission.READ_CONTACTS" /> <uses-permission android:name="android.permission.RECORD_AUDIO" /> <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" /> <uses-permission android:name="android.permission.BLUETOOTH" /> <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" /> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <uses-feature android:name="android.hardware.camera" /> <uses-feature android:name="android.hardware.camera.autofocus" /> <uses-permission android:name="android.permission.VIBRATE" /> <uses-feature android:name="android.hardware.camera.flash" /> <uses-permission android:name="android.permission.FLASHLIGHT" /> <uses-permission android:name="android.permission.REORDER_TASKS"/> <uses-permission android:name="android.permission.READ_CONTACTS" />

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

本插件不采集任何数据,只是便于开发者用作安卓权限申请使用。

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

使用中有什么不明白的地方,就向插件作者提问吧~ 我要提问