更新记录

1.0.2(2022-09-06)

增加app后台回到前台、退出app、重启app、启动app等接口

1.0.1(2022-02-25)

增加复制、粘贴

1.0.0(2022-02-14)

相机定位等权限判断、 文本图片分享、word/pdf等文件浏览、打印、 发送短信邮件, 打开设置里app权限页、 获取IP,版本配置信息,安装apk 截屏、播放音效

查看更多

平台兼容性

Android Android CPU类型 iOS
适用版本区间:4.4 - 12.0 armeabi-v7a:未测试,arm64-v8a:未测试,x86:未测试 适用版本区间:9 - 16

原生插件通用使用流程:

  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原生插件配置”->”云端插件“列表中删除该插件重新选择


前言

wrs-systemutils相机定位等权限判断、文本图片分享、word/pdf等文件浏览、打印、发送短信邮件,打开设置里app权限页、获取IP,版本配置信息,安装apk、截屏、播放音效

权限模块

ios、Android的权限都需要在项目的manifest.json的App权限配置里先配置权限

  1. Android请求权限

                var params = {};
                var requestCode = this.requestCode;
                params.permissions = permissions; // 这里的权限名称参考manifest.json,源码视图里的Android-permissions
                params.requestCode = requestCode; // 请求码
                systemutils.requestPermissions(params, (resp) => {
                    if (resp.requestCode == requestCode) {
                        var permissions = resp.permissions;
                        var grantResults = resp.grantResults;
                        var length = grantResults.length;
                        var grantAll = true; // 用户是否全部权限都授权了
                        var content = "";
                        for (var i = 0; i < length; i++) {
                            var grantResult = grantResults[i];
                            var permission = permissions[i];
                            if (grantResult == 0) { // 用户授权了此权限
                                content += permission + ":" + "已授权\n";
                            } else {
                                content += permission + ":" + "被拒绝\n";
                                grantAll = false;
                            }
                        }
                        var title = "";
                        if (grantAll) {
                            title = "有权限";
                        } else {
                            title = "无定位权限,是否开启?";
                        }
                        uni.showModal({
                            title: title,
                            content: content,
                            success: function(res) {
                                if (res.confirm && !grantAll) {
                                    systemutils.openAppSetting();
                                }
                            }
                        });
                    }
                });
  1. Android检查权限

检查权限API基本上用不到,业务中某些需要鉴别权限的话直接使用请求权限API即可


                        var params = {};
                        params.permissions = this.permissions;
                        var resp = systemutils.checkSelfPermission(params);
                        if (isString(resp)) {
                            resp = JSON.parse(resp);
                        }
                        var permissions = resp.permissions;
                        var grantResults = resp.grantResults;
                        var length = grantResults.length;
                        var grantAll = true; // 用户是否全部权限都授权了
                        var content = "";
                        for (var i = 0; i < length; i++) {
                            var grantResult = grantResults[i];
                            var permission = permissions[i];
                            if (grantResult == 0) { // 用户授权了此权限
                                content += permission + ":" + "有权限\n";
                            } else {
                                content += permission + ":" + "无权限\n";
                                grantAll = false;
                            }
                        }
                        var title = "";
                        if (grantAll) {
                            title = "当前业务拥有所需权限,可以执行对应业务";
                        } else {
                            title = "当前业务所需权限不足,是否请求权限?";
                        }
                        var _this = this;
                        uni.showModal({
                            title: title,
                            content: content,
                            success: function(res) {
                                if (res.confirm) {
                                    _this.requestPermissions();
                                }
                            }
                        });
  1. Android是否需要显示定位权限

                        var params = {};
                        params.permissions = this.permissions;
                        var resp = systemutils.shouldShowRequestPermissionRationale(params);
                        if (isString(resp)) {
                            resp = JSON.parse(resp);
                        }
                        var permissions = resp.permissions;
                        var shows = resp.shows;
                        var length = shows.length;
                        var content = "";
                        for (var i = 0; i < length; i++) {
                            var show = shows[i];
                            var permission = permissions[i];
                            if (show) { // 应用第一次请求过此权限,但是被用户拒绝了
                                content += permission + ":" + "第一次时询问时被用户拒绝\n";
                            } else { // 应用第一次请求此权限时被用户拒绝,第二次再请求此权限时,用户勾选了权限请求对话框的“不再询问”
                                content += permission + ":" + "第二次时询问时用户选择了'不再询问'\n";
                            }
                        }
                        var title = "是否需要显示请求权限弹框";
                        uni.showModal({
                            title: title,
                            content: content,
                            success: function(res) {

                            }
                        });
  1. 常用的iOS、Android业务权限方法参考demo,业务权限包含:
  • 定位权限
  • 相机权限
  • 相册权限
  • 蓝牙权限
  • 麦克风MIC权限
  • 通讯录权限
  • 消息通知权限
  • Android其他权限名称参考manifest.json,源码视图里的Android-permissions
  1. 当检查到没有权限时,跳转到app设置页面来开启权限

systemutils.openAppSetting();

系统分享

功能代码参考demo

  • 分享文本
  • 分享图片
  • 分享文件
  • app内浏览图片、word、excel、ppt、pdf等文件
  • 使用第三方app打开文件
  • iOS打印
  • 判断 App 是否处于前台

系统功能模块

功能代码参考demo

  • 打开app的设置页
  • 打开系统设置页
  • 浏览器打开url
  • ios打开appstore商店某个应用的主页
  • 发送email邮件
  • 发送短信
  • 拨打电话

系统功能模块

功能代码参考demo

  • 获取本机IP
  • 获取设备信息,如UUID、mac、deviceId、手机系统版本、手机名称
  • 获取app信息,如app版本名、app版本code
  • 获取当前系统语言
  • Android判断是否安装了某个app
  • Android安装apk
  • app是否在前台运行

var params = {
    packageName: "com.wrs.ccc"
}
var resp = systemutils.isAppForeground(params)
if (isString(resp)) {
    resp = JSON.parse(resp);
}
if(resp.isAppForeground == 0) { // 前台运行

} else if(resp.isAppForeground == 2) { // 后台运行

} else { // 不活跃

}
  • app是否在运行中,仅支持android

var params = {
    packageName: "com.wrs.ccc"
}
var resp = systemutils.isAppRunning(params)
if (isString(resp)) {
    resp = JSON.parse(resp);
}
if(resp.isAppRunning ) { // 

} else { // 

}
  • 启动运行app,仅支持android

var params = {
    packageName: "com.wrs.ccc"
}
systemutils.launchApp(params)
  • 重启app,仅支持android

var params = {
    isKillProcess: true // 是否杀了当前进程
}
systemutils.relaunchApp(params)
  • 退出app

systemutils.exitApp()
  • 后台运行app返回到前台运行,仅支持android

var params = {
    packageName: "com.wrs.app"
}
systemutils.appBackForeground(params)

屏幕截屏 复制、粘贴

功能代码参考demo

播放音效

功能代码参考demo

  • 播放自定义的音效
  • 播放系统音效,如邮件、短信、铃声、通知等音效
  • 震动

支持定制,联系方式 QQ:252797991

如果觉得可以就点个👍吧,欢迎粉丝收藏,土豪打赏,您的关注就是我们创作的动力!

隐私、权限声明

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

Android: <uses-permission android:name="android.permission.READ_PRIVILEGED_PHONE_STATE" tools:ignore="ProtectedPermissions" /> <uses-permission android:name="android.permission.REORDER_TASKS" /> <uses-permission android:name="android.permission.VIBRATE" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" tools:ignore="ProtectedPermissions" /> <uses-permission android:name="android.permission.CALL_PHONE" /> <uses-permission android:name="android.permission.SEND_SMS" /> <uses-permission android:name="android.permission.READ_PHONE_STATE" /> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" /> <uses-permission android:name="android.permission.FOREGROUND_SERVICE" /> ios: 相机、相册、定位、蓝牙、麦克风、通讯录、消息通知

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

插件不采集任何数据

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

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