更新记录

1.0.0(2023-10-22)

  1. 读取U盘文件列表
  2. U盘文件拷贝到app
  3. 拷贝copy app文件到U盘目录

平台兼容性

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


前言

读取U盘文件,拷贝copy U盘文件到app,获取U盘文件列表,保存文件到U盘

功能

  1. 读取U盘文件列表
  2. U盘文件拷贝到app
  3. 拷贝copy app文件到U盘目录

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

接入步骤

如不了解原生插件接入步骤的同学请参考: https://www.jianshu.com/p/830ccc503e29https://blog.csdn.net/wenrisheng/article/details/124057700

变量


var usbFile = uni.requireNativePlugin("wrs-usbFile");
  1. 获取所有USB设备(仅支持Android)

                usbFile.getAllUSBDevice((resp) => {
                    this.showMsg(JSON.stringify(resp))
                })
  1. 请求USB权限(仅支持Android)

                        this.key = devices[clickIndex].key;
                        var params = {};
                        params.key = this.key; // USB key,从getAllUSBDevice接口获取
                        // 请求权限,权限结果通过setCalllback回调
                        usbFile.requestPermission(params);
  1. 注册监听(仅支持Android)

usbFile.registerReceiver()
  1. 注册监听回调(仅支持Android)

                // 注册监听回调
                usbFile.setCalllback((resp) => {
                    this.showMsg(JSON.stringify(resp))
                    var action = resp.action;
                    switch (action) {
                        // USB授权结果
                        case "com.android.wrs.USB_PERMISSION":
                            // var granted = resp.granted;
                            // this.showMsg("USB授权结果:" + granted);

                            // 以hasPermission接口请求的授权结果为准
                            usbFile.hasPermission({
                                key: this.key
                            }, (perResp)=>{
                                this.showMsg(JSON.stringify(perResp))
                            })
                            break;
                        case "android.hardware.usb.action.USB_DEVICE_ATTACHED":
                            this.showMsg("有USB设备连接");
                            break;
                        case "android.hardware.usb.action.USB_DEVICE_DETACHED":
                            this.showMsg("USB设备断开连接");
                            break;
                        default:
                            break;
                    }
                });
  1. 判断是否有USB访问权限

            // 以hasPermission接口请求的授权结果为准
            usbFile.hasPermission({
                key: this.key
            }, (perResp)=>{
                this.showMsg(JSON.stringify(perResp))
            })
  1. 获取USB设备某个目录的文件列表(仅支持Android)

    this.key = devices[clickIndex].key;
    var params = {}
    params.key = this.key; // USB设备key
    params.partitionIndex = 0; // 分区索引,一般都只有一个分区,填0
    params.path = "/aa/bb/cc" // U盘文件夹路径
    usbFile.getPathFiles(params, (resp)=>{
        this.showMsg(JSON.stringify(resp))
    });
  1. 拷贝copy USB设备的某个文件到app或手机系统(仅支持Android)

                        var params = {}
                        params.key = this.key;// USB设备key
                        params.srcFilePath = "/aa/bb/cc/text.txt";// U盘文件路径
                        // params.destDir = "/sdcard" // 保存目录
                        params.destDir = plus.io.convertLocalFileSystemURL("_download") // 保存目录
                        usbFile.copyFile(params, (resp)=>{
                            var code = resp.code
                            if(code == 0) { // 成功

                            } else { // 失败

                            }
                            this.showMsg(JSON.stringify(resp))
                        });
  1. 拷贝copy app文件到U盘目录

                        var params = {}
                        params.key = this.key;// USB设备key
                        params.destDir = "/aa/bb/cc";// U盘保存文件目录
                         params.srcFilePath = plus.io.convertLocalFileSystemURL("_www/static/logo.png") // 
                        usbFile.saveFile(params, (resp)=>{
                            var code = resp.code
                            if(code == 0) { // 成功

                            } else { // 失败

                            }
                            this.showMsg(JSON.stringify(resp))
                        });
  1. 获取USB文件(仅支持ios,iOS是通过调用系统到文件选择器选择文件后保存到app到某个目录下,有些U盘可能不支持iPhone,iPhone连接U盘,打开系统的“文件”app,查看是否识别到U盘)

                var saveDir = plus.io.convertLocalFileSystemURL("_download/usbFiles")

                var params = {}
                params.documentTypes = ["public.content", "public.text", "public.source-code ", "public.image",
                        "public.audiovisual-content", "com.adobe.pdf", "com.apple.keynote.key",
                        "com.microsoft.word.doc", "com.microsoft.excel.xls",
                        "com.microsoft.powerpoint.ppt", "org.openxmlformats.wordprocessingml.document",
                        "com.microsoft.excel.xls", "org.openxmlformats.presentationml.presentation"
                    ]
                params.allowsMultipleSelection = true // 是否允许多选
                params.saveDir = saveDir; // 选择后的文件保存到哪个目录下
                usbFile.selectFile(params, (resp) => {
                    // 选择的文件是临时缓存到iOS app 的缓存文件夹的,文件使用完后建议删除,避免本地空间占用
                    this.showMsg(JSON.stringify(resp))
                    if (resp.fileArray && resp.fileArray.length > 0) {
                        var filePath = resp.fileArray[0].filePath;
                        if (filePath) {
                            console.log("filePath:" + filePath);
                            }
                    }
                });

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

隐私、权限声明

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

android: <uses-permission android:name="android.permission.USB_PERMISSION" /> <uses-feature android:name="android.hardware.usb.host" /> <uses-permission android:name="android.hardware.usb.host" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> <!--Android 13 权限适配--> <uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE" /> iOS: 无

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

插件不采集任何数据

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

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