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

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 如何优雅的使用权限认证并对本地文件上下起手的更多相关文章

  1. shiro太复杂?快来试试这个轻量级权限认证框架!

    前言 在java的世界里,有很多优秀的权限认证框架,如Apache Shiro.Spring Security 等等.这些框架背景强大,历史悠久,其生态也比较齐全. 但同时这些框架也并非十分完美,在前 ...

  2. asp.net权限认证:OWIN实现OAuth 2.0 之客户端模式(Client Credential)

    asp.net权限认证系列 asp.net权限认证:Forms认证 asp.net权限认证:HTTP基本认证(http basic) asp.net权限认证:Windows认证 asp.net权限认证 ...

  3. SpringBoot系列 - 集成JWT实现接口权限认证

    会飞的污熊 2018-01-22 16173 阅读 spring jwt springboot RESTful API认证方式 一般来讲,对于RESTful API都会有认证(Authenticati ...

  4. thinkphp5的Auth权限认证实战

    thinkphp5的Auth权限认证实战 一.总结 一句话总结:基于角色的权限管理(真正做一遍,就会发现很简单,不然一直都是半懂不懂的) 角色 权限 真正做一遍,就会发现很简单,不然一直都是半懂不懂的 ...

  5. 【laravel54】关于用户权限认证RBAC和无限极分类

    1.权限认证方面: https://packagist.org/packages/spatie/laravel-permission 用户认证 HTTP本身是无状态,通常在系统交互的过程中,使用账号或 ...

  6. app与php后台接口登录认证、验证(seesion和token)

    简要:随着电商的不断发展,APP也层次不穷,随着科技的发展主要登录形式(微信.QQ.账号/密码):为此向大家分享一下"app与php后台接口登录认证.验证"想法和做法:希望能够帮助 ...

  7. SpringBoot集成JWT 实现接口权限认证

    JWT介绍 Json web token (JWT), 是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准((RFC 7519).该token被设计为紧凑且安全的, 特别适用于分布式站点 ...

  8. Eureka实战-4【开启http basic权限认证】

    在我们实际生产环境中,都需要考虑到一个安全问题,比如用户登录,又或者是eureka server,它对外暴露的有自己的rest API,如果没有安全认证,也就意味着别人可以通过rest API随意修改 ...

  9. .Net Core权限认证基于Cookie的认证&授权.Scheme、Policy扩展

    在身份认证中,如果某个Action需要权限才能访问,最开始的想法就是,哪个Action需要权限才能访问,我们写个特性标注到上面即可,[TypeFilter(typeof(CustomAuthorize ...

随机推荐

  1. Python3.7+Django2.0.4配合Mongodb打造高性能高扩展标签云存储方案

    原文转载自「刘悦的技术博客」https://v3u.cn/a_id_141 书接上回,之前有一篇文章提到了标签云系统的构建:Python3.7+jieba(结巴分词)配合Wordcloud2.js来构 ...

  2. AWS EKS 创建k8s生产环境实例

    #AWS EKS 创建k8s生产环境实例 在AWS部署海外节点, 图简单使用web控制台创建VPC和k8s集群出错(k8s), 使用cli命令行工具创建成功 本实例为复盘, 记录aws命令行工具创建e ...

  3. Apache Pulsar Summit Asia 2020 正式启动,演讲议题征集中!

    Apache Pulsar Summit 是 Apache Pulsar 社区年度盛会,它将分布在世界各地的 Apache Pulsar 项目 Contributor.Commiter 和各企业 CT ...

  4. ahooks 是怎么解决用户多次提交问题?

    本文是深入浅出 ahooks 源码系列文章的第四篇,该系列已整理成文档-地址.觉得还不错,给个 star 支持一下哈,Thanks. 本文来探索一下 ahooks 的 useLockFn.并由此讨论一 ...

  5. 用RocketMQ这么久,才知道消息可以这样玩

    在上一章节中,我们讲解了RocketMQ的基本介绍,作为MQ最重要的就是消息的使用了,今天我们就来带大家如何玩转MQ的消息. 消息中间件,英文Message Queue,简称MQ.它没有标准定义,一般 ...

  6. P5384[Cnoi2019]雪松果树 (长链剖分)

    题面 一棵以 1 1 1 为根的 N N N 个节点的有根树, Q Q Q 次询问,每次问一个点 u u u 的 k k k 级兄弟有多少个(第 k k k 代祖先的第 k k k 代孩子),如果没有 ...

  7. python必备基础

    1. 基础函数  序号  函数  说明  1 print()  打印  2 input()   输入   3 int()   转化为整形   4 float()  转化为浮点型   5 str()  ...

  8. vscode 快速注释和撤回快捷键

    好家伙,天天忘,建议先练个十遍上手 1.快捷行注释 Ctrl + / 2.快捷块注释 Alt + Shift + A 3.撤回 Ctrl + Z 4.恢复撤回(撤回你的撤回) Ctrl + Shift ...

  9. 虚拟机里做LUN映射(RHEL系统和centos系统皆可)(Linux版)

    紧接着Windows的LUN映射之后 参考 (https://www.cnblogs.com/zhengyan6/p/16121268.html) 先删除部分配置(没有做之前的LUN映射则不用) 进网 ...

  10. KingbaseES 数据库删除功能组件

      关键字: KingbaseES.卸载.删除功能   一.安装后检查 在安装完成后,可以通过以下几种方式进行安装正确性验证: 1. 查看安装日志,确认没有错误记录; 2. 查看开始菜单: 查看应用程 ...