uni-app 如何优雅的使用权限认证并对本地文件上下起手
这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助

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

uni-app 如何优雅的使用权限认证并对本地文件上下起手的更多相关文章
- shiro太复杂?快来试试这个轻量级权限认证框架!
前言 在java的世界里,有很多优秀的权限认证框架,如Apache Shiro.Spring Security 等等.这些框架背景强大,历史悠久,其生态也比较齐全. 但同时这些框架也并非十分完美,在前 ...
- asp.net权限认证:OWIN实现OAuth 2.0 之客户端模式(Client Credential)
asp.net权限认证系列 asp.net权限认证:Forms认证 asp.net权限认证:HTTP基本认证(http basic) asp.net权限认证:Windows认证 asp.net权限认证 ...
- SpringBoot系列 - 集成JWT实现接口权限认证
会飞的污熊 2018-01-22 16173 阅读 spring jwt springboot RESTful API认证方式 一般来讲,对于RESTful API都会有认证(Authenticati ...
- thinkphp5的Auth权限认证实战
thinkphp5的Auth权限认证实战 一.总结 一句话总结:基于角色的权限管理(真正做一遍,就会发现很简单,不然一直都是半懂不懂的) 角色 权限 真正做一遍,就会发现很简单,不然一直都是半懂不懂的 ...
- 【laravel54】关于用户权限认证RBAC和无限极分类
1.权限认证方面: https://packagist.org/packages/spatie/laravel-permission 用户认证 HTTP本身是无状态,通常在系统交互的过程中,使用账号或 ...
- app与php后台接口登录认证、验证(seesion和token)
简要:随着电商的不断发展,APP也层次不穷,随着科技的发展主要登录形式(微信.QQ.账号/密码):为此向大家分享一下"app与php后台接口登录认证.验证"想法和做法:希望能够帮助 ...
- SpringBoot集成JWT 实现接口权限认证
JWT介绍 Json web token (JWT), 是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准((RFC 7519).该token被设计为紧凑且安全的, 特别适用于分布式站点 ...
- Eureka实战-4【开启http basic权限认证】
在我们实际生产环境中,都需要考虑到一个安全问题,比如用户登录,又或者是eureka server,它对外暴露的有自己的rest API,如果没有安全认证,也就意味着别人可以通过rest API随意修改 ...
- .Net Core权限认证基于Cookie的认证&授权.Scheme、Policy扩展
在身份认证中,如果某个Action需要权限才能访问,最开始的想法就是,哪个Action需要权限才能访问,我们写个特性标注到上面即可,[TypeFilter(typeof(CustomAuthorize ...
随机推荐
- 清北学堂 2020 国庆J2考前综合强化 Day7
目录 1. 题目 T1 魔力石 题目描述 Sol T2 和 题目描述 Sol T3 数对 题目描述 Sol T4 海豹王国 题目描述 Sol 考场策略 1. 题目 T1 魔力石 题目描述 题目描述 小 ...
- linux学习之selinux安全处理
linux在默认情况下会开启selinux,如果软件开放的端口不是selinux默认的协议端口会导致防火墙端口开放后还是无法访问.以下是解决办法. [root@localhost ~]# semana ...
- Vue 路由的简单使用(命名路由、query路由传参、params路由传参)
1 # Vue 路由 2 # 1.理解:一个路由(toute)就是一组映射关系(key-value),多个路由需要路由器(router)进行管理 3 # 2.前端路由:key是路径,value是组件 ...
- SDK和API的直接区别
狭义的说法,在实际工作中, 如果对方需要你提供一个api,是指一个工程提供给另外一个工程的接口(一般是基于http协议). 如果对方需要你提供一个sdk,是指基于对方工程的编程语言,提供一个代码包.在 ...
- 4.直方图介绍和使用|MySQL索引学习
GreatSQL社区原创内容未经授权不得随意使用,转载请联系小编并注明来源. 目录 一.导读 二.步骤 2.1 SQL语句 2.2 直方图案例 2.3 查看直方图统计信息 2.3 直方图分类 2.4 ...
- Redis 06 哈希
参考源 https://www.bilibili.com/video/BV1S54y1R7SB?spm_id_from=333.999.0.0 版本 本文章基于 Redis 6.2.6 哈希就是 ke ...
- 对于Java中的Loop或For-each,哪个更快
Which is Faster For Loop or For-each in Java 对于Java中的Loop或Foreach,哪个更快 通过本文,您可以了解一些集合遍历技巧. Java遍历集合有 ...
- Spring 01: Spring配置 + IOC控制反转 + Setter注入
简介 Spring框架是一个容器,是整合其他框架的框架 他的核心是IOC(控制反转)和AOP(面向切面编程),由20多个模块构成,在很多领域都提供了优秀的问题解决方案 特点 轻量级:由20多个模块构成 ...
- 事物的隔离性和MVCC
事物的隔离性 mysql的服务端是支持多个客户端同时与之连接的,每个客户端可能还并发了好几个连接,所以mysql是需要同时处理很多事情的,每一件独立的事情就叫做事务.我们知道事务有一个叫隔离性的特性, ...
- C# 数组 深拷贝 和 数组传参
前言 C#中引用类型无法使用const,因此传参的时候使用引用类型,一定要注意是否会改变其值.下面介绍几种 数组的 深拷贝方法. 前提 下面的测试代码有一些前提, sw为Stopwatch nForT ...