这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助

1.起因

最近有一个需求,需要使用自定义插件,来对接硬件功能,需要配合对手机的权限进行判断和提示,并在对接后对本地文件进行操作,这里给大家分享下我的碰到的问题,废话不多说,开搞

2.对接自定义插件,制作自定义基座

manifest.json:本地插件;云端插件

本地插件:

将插件放到nativeplugins目录中

云端插件:

const TestModule = uni.requireNativePlugin("TestModule")//本地插件
const callTrans = uni.requireNativePlugin('ljc-CallTransfer');//云端插件,试用

使用原生插件,需打包自定义基座

若使用试用版插件,则使用公共测试证书,传统打包

打开项目vue 文件 —— 点击运行 —— 选择运行手机或模拟器 —— 选择运行基座选择 —— 选择自定义基座调试

点击运行 —— 选择运行手机或模拟器 —— 选择制作自定义调式基座 —— 如图 选择 进行打包 —— 打包成功以后将包发送到手机上完成安装

点击运行 —— 选择运行手机或模拟器 —— 运行到Android App基座—— 如果没有连接手机需要连接手机(打开usb调式 以及 开发者工具)选择对应要调试的手机编号 —— 即可进行自定义基座调试。

3.权限全判断,调起解决方案

这里给大家推荐一个插件,自己照着写或者直接引入都行

地址:https://ext.dcloud.net.cn/plugin?id=594#detail

核心方法展示:

方法一

// 检查系统的设备服务是否开启
// var checkSystemEnableLocation = async function () {
function checkSystemEnableLocation() {
if (isIos) {
var result = false;
var cllocationManger = plus.ios.import("CLLocationManager");
var result = cllocationManger.locationServicesEnabled();
console.log("系统定位开启:" + result);
plus.ios.deleteObject(cllocationManger);
return result;
} else {
var context = plus.android.importClass("android.content.Context");
var locationManager = plus.android.importClass("android.location.LocationManager");
var main = plus.android.runtimeMainActivity();
var mainSvr = main.getSystemService(context.LOCATION_SERVICE);
var result = mainSvr.isProviderEnabled(locationManager.GPS_PROVIDER);
console.log("系统定位开启:" + result);
return result
}
}

方法二

// vue的method里编写如下代码
async requestAndroidPermission(permisionID) {
var result = await permision.requestAndroidPermission(permisionID)
var strStatus
if (result == 1) {
strStatus = "已获得授权"
} else if (result == 0) {
strStatus = "未获得授权"
} else {
strStatus = "被永久拒绝权限"
}
uni.showModal({
content: permisionID + strStatus,
showCancel: false
});
},

4.对本地文件上下起手

这里是最有意思的部分,也是我在网上找资料找得最多的一个难点

这里给大家分享我写好的两个类型之中的方法,查找和删除,希望对大家有所帮助

获取指定目录里的文件方法一

			getDirList(url) {
uni.showLoading({
title: '获取中'
});
plus.io.resolveLocalFileSystemURL(url, (entry) => {
const directoryReader = entry.createReader();
directoryReader.readEntries((files) => {
const len = files.length;
uni.hideLoading();
// for (var i = 0; i < len; i++) {
// var file = files[i]
// console.log(file.fullPath)
// }
})
})
},

获取指定目录里的文件方法二

			getDirList(url) {
uni.showLoading({
title: '获取中'
});
const environment = plus.android.importClass("android.os.Environment")
const File = plus.android.importClass("java.io.File");
const sdRoot = environment.getExternalStorageDirectory()
const files = plus.android.invoke(new File(url), "listFiles")
uni.hideLoading();
var len = files.length;
for (var i = 0; i < len; i++) {
var file = files[i]
// 过滤隐藏文件
if (!plus.android.invoke(file, "isHidden")) {
// 非隐藏文件执行操作
var name = plus.android.invoke(file, "getName")
console.log(url+'/'+name)
}
}
},

删除指定路径里的文件方法

			deleteDirFun(url) {
uni.showLoading({
title: '删除中'
});
plus.io.resolveLocalFileSystemURL(url, (
entry) => {
entry.remove()
uni.hideLoading();
//读取这个目录对象
// const directoryReader = entry.createReader();
// directoryReader.readEntries((entries)=>{
// console.log(entries.length)
// })
})
}

到这里,有关的所有东西分享完毕,如果对您有所帮助,欢迎您点个关注,我会定时更新技术文档,大家一起讨论学习,一起进步。

最新文章

  1. vsftpd的主动模式与被动模式
  2. 一步步学习JSON
  3. Ubuntu 14.04 + Linux 3.14.34 系统调用实现文件拷贝
  4. 362. Design Hit Counter
  5. 安装SVN及实现nginx web同步更新需要在WDCP一键安装包的基础上
  6. HDOJ 1028 Ignatius and the Princess III(递推)
  7. web前端与后端
  8. MongoDB_GridFS_存储文件
  9. CSS样式之表格,表单
  10. MysqL主主复制_模式之日志点复制
  11. Django REST framework+Vue 打造生鲜超市(十二)
  12. JS 实现的年月日三级联动
  13. POJ 3984 - 迷宫问题 - [BFS水题]
  14. java329 继承、类的高级概念
  15. ECharts访问后台,JSON格式返回数据实例
  16. CSS样式学习-3、轮廓、伪类/元素、display-flex布局
  17. Java用System读取系统相关信息、环境变量——(六)
  18. 【刷题】LOJ 6010 「网络流 24 题」数字梯形
  19. hdu 5826 physics 物理题
  20. UVa 12549 机器人警卫(最小点覆盖)

热门文章

  1. MYSQL(基本篇)——一篇文章带你走进MYSQL的奇妙世界
  2. 在Ubuntu下编译安装GreatSQL
  3. CSP-J2021 题解
  4. DolphinScheduler 集群高可用测试:有效分摊服务器压力,达到性能最大优化!
  5. Luogu1382 楼房 (线段树 扫描线)
  6. .NET异步编程模式(一)
  7. MySQL 连接超时:报错SQLSTATE[HY000] [2002] Connection timed out
  8. React报错之JSX element type does not have any construct or call signatures
  9. 查看 npm 的全局安装依赖包
  10. suse 11 sp3编译报错问题