更新记录
1.0.0(2023-10-22)
- 读取U盘文件列表
- U盘文件拷贝到app
- 拷贝copy app文件到U盘目录
平台兼容性
Android | Android CPU类型 | iOS |
---|---|---|
适用版本区间:4.4 - 12.0 | armeabi-v7a:未测试,arm64-v8a:未测试,x86:未测试 | 适用版本区间:9 - 16 |
原生插件通用使用流程:
- 购买插件,选择该插件绑定的项目。
- 在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原生插件配置”->”云端插件“列表中删除该插件重新选择
前言
读取U盘文件,拷贝copy U盘文件到app,获取U盘文件列表,保存文件到U盘
功能
- 读取U盘文件列表
- U盘文件拷贝到app
- 拷贝copy app文件到U盘目录
支持定制,联系方式 QQ:252797991
接入步骤
如不了解原生插件接入步骤的同学请参考: https://www.jianshu.com/p/830ccc503e29 或 https://blog.csdn.net/wenrisheng/article/details/124057700
变量
var usbFile = uni.requireNativePlugin("wrs-usbFile");
- 获取所有USB设备(仅支持Android)
usbFile.getAllUSBDevice((resp) => {
this.showMsg(JSON.stringify(resp))
})
- 请求USB权限(仅支持Android)
this.key = devices[clickIndex].key;
var params = {};
params.key = this.key; // USB key,从getAllUSBDevice接口获取
// 请求权限,权限结果通过setCalllback回调
usbFile.requestPermission(params);
- 注册监听(仅支持Android)
usbFile.registerReceiver()
- 注册监听回调(仅支持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;
}
});
- 判断是否有USB访问权限
// 以hasPermission接口请求的授权结果为准
usbFile.hasPermission({
key: this.key
}, (perResp)=>{
this.showMsg(JSON.stringify(perResp))
})
- 获取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))
});
- 拷贝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))
});
- 拷贝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))
});
- 获取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);
}
}
});