uni-app 如何优雅的使用权限认证并对本地文件上下起手

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

uni-app 如何优雅的使用权限认证并对本地文件上下起手

1.起因

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

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

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

本地插件:

将插件放到nativeplugins目录中

uni-app 如何优雅的使用权限认证并对本地文件上下起手

云端插件:

uni-app 如何优雅的使用权限认证并对本地文件上下起手

html;gutter:true; const TestModule = uni.requireNativePlugin("TestModule")//本地插件 const callTrans = uni.requireNativePlugin('ljc-CallTransfer');//云端插件,试用</p> <pre><code> ### 使用原生插件,需打包自定义基座 ### 若使用试用版插件,则使用公共测试证书,传统打包 ### 打开项目vue 文件 —— 点击运行 —— 选择运行手机或模拟器 —— 选择运行基座选择 —— 选择自定义基座调试 ![uni-app 如何优雅的使用权限认证并对本地文件上下起手](https://johngo-pic.oss-cn-beijing.aliyuncs.com/articles/20230130/2149129-20221014174804797-1001519421.png) ### 点击运行 —— 选择运行手机或模拟器 —— 选择制作自定义调式基座 —— 如图 选择 进行打包 —— 打包成功以后将包发送到手机上完成安装 ![uni-app 如何优雅的使用权限认证并对本地文件上下起手](https://johngo-pic.oss-cn-beijing.aliyuncs.com/articles/20230130/2149129-20221014174842752-1141526074.png) ### 点击运行 —— 选择运行手机或模拟器 —— 运行到Android App基座—— 如果没有连接手机需要连接手机(打开usb调式 以及 开发者工具)选择对应要调试的手机编号 —— 即可进行自定义基座调试。 ![uni-app 如何优雅的使用权限认证并对本地文件上下起手](https://johngo-pic.oss-cn-beijing.aliyuncs.com/articles/20230130/2149129-20221014174915316-558191123.png) ## 3.权限全判断,调起解决方案 ### 这里给大家推荐一个插件,自己照着写或者直接引入都行 ![uni-app 如何优雅的使用权限认证并对本地文件上下起手](https://johngo-pic.oss-cn-beijing.aliyuncs.com/articles/20230130/2149129-20221014175934285-2060647607.png) ### 核心方法展示: ### 方法一 ;gutter:true;
// 检查系统的设备服务是否开启
// 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
}
}

方法二

html;gutter:true; // 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 }); },</p> <pre><code> ## 4.对本地文件上下起手 ### 这里是最有意思的部分,也是我在网上找资料找得最多的一个难点 ### 这里给大家分享我写好的两个类型之中的方法,查找和删除,希望对大家有所帮助 ### 获取指定目录里的文件方法一 ;gutter:true;
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)
// }
})
})
},

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

html;gutter:true; 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) } } },</p> <pre><code> ### 删除指定路径里的文件方法 ;gutter:true;
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 如何优雅的使用权限认证并对本地文件上下起手

Original: https://www.cnblogs.com/smileZAZ/p/16792449.html
Author: 林恒
Title: uni-app 如何优雅的使用权限认证并对本地文件上下起手



相关阅读

Title: 深入理解perf报告中的swapper进程

一、前言

1、在perf监控进程的系统调用时,会出现大量swapper进程
2、官方描述该进程是当CPU上没有其他任务运行时,就会执行swapper。换句话说swapper意味着CPU啥事也没干,跑去休息去了
3、本文来观察一下swapper在cpu上的表现

深入理解perf报告中的swapper进程

二、环境准备

组件 版本 OS Ubuntu 16.04.4 LTS systemtap version 4.2/0.165, commit release-4.1-41-g9cde541d4464

三、准备脚本

祭出我们强有力的工具systemtap,这里需要注意的是,systemtap各版本之间有一定的差异,我的版本是在这里下载的:https://sourceware.org/systemtap/getinvolved.html

root@wilson-ubuntu:/opt/stap# stap -V
Systemtap translator/driver (version 4.2/0.165, commit release-4.1-41-g9cde541d4464)
Copyright (C) 2005-2019 Red Hat, Inc. and others
This is free software; see the source for copying conditions.

tested kernel versions: 2.6.18 ... 5.1-rc2
enabled features: PYTHON3 NLS

确定好版本之后,编写一个脚本,主要用到probe::scheduler.cpu_off,https://sourceware.org/systemtap/tapsets/API-scheduler-cpu-off.html

脚本如下:

probe scheduler.cpu_off
{
        printf("%20s (%5d) %5s %20s (%5d)  , is idle:%d \n ", task_execname(task_prev),task_pid(task_prev),"==>",task_execname(task_next),task_pid(task_next),idle)
}

脚本非常简单,scheduler.cpu_off主要描述了进程离开CPU的状态:
task_prev:即将离开CPU的进程
task_next:即将进入CPU的进程
idle:cpu是否处于空闲,这个变量就是我们关注的重点,如果idle为1,那就证明CPU并没有运行任务

四、运行脚本

由于数据量太大,我们筛选一部分:

root@wilson-ubuntu:/opt/stap# stap switch.stp
...

            swapper/0 (    0)   ==>               stapio (29159)  , is idle:1
               stapio (29159)   ==>            swapper/0 (    0)  , is idle:0
            swapper/0 (    0)   ==>            rcu_sched (    7)  , is idle:1
            rcu_sched (    7)   ==>            swapper/0 (    0)  , is idle:0
            swapper/2 (    0)   ==>       irq/31-iwlwifi (  542)  , is idle:1
       irq/31-iwlwifi (  542)   ==>            swapper/2 (    0)  , is idle:0
            swapper/2 (    0)   ==>       irq/31-iwlwifi (  542)  , is idle:1
       irq/31-iwlwifi (  542)   ==>            swapper/2 (    0)  , is idle:0
            swapper/2 (    0)   ==>       irq/31-iwlwifi (  542)  , is idle:1
       irq/31-iwlwifi (  542)   ==>            swapper/2 (    0)  , is idle:0
            swapper/2 (    0)   ==>       irq/31-iwlwifi (  542)  , is idle:1
       irq/31-iwlwifi (  542)   ==>            swapper/2 (    0)  , is idle:0
            swapper/0 (    0)   ==>            rcu_sched (    7)  , is idle:1
            rcu_sched (    7)   ==>            swapper/0 (    0)  , is idle:0
            swapper/2 (    0)   ==>       irq/31-iwlwifi (  542)  , is idle:1
       irq/31-iwlwifi (  542)   ==>            swapper/2 (    0)  , is idle:0
            swapper/2 (    0)   ==>       irq/31-iwlwifi (  542)  , is idle:1
       irq/31-iwlwifi (  542)   ==>            swapper/2 (    0)  , is idle:0
            swapper/0 (    0)   ==>            rcu_sched (    7)  , is idle:1
            swapper/1 (    0)   ==>               stapio (29159)  , is idle:1
...

1、由于是4核的cpu,所以有4个swapper,swapper/n
2、swapper的进程号是0,在系统初始化时创建init进程,之后它就成了一个最低优先级的空闲任务
3、当swapper出现在左边的时候(即将离开cpu的进程),对应最后一个字段idle是1,这时候证明cpu上运行的swapper进程(CPU去闲散去了)
4、由此验证了,当cpu运行swapper进程的时候,实际上cpu是处于闲散的状态,并没有任何真正的任务在上面运行,处于idle状态

至此,本文结束
在下才疏学浅,有撒汤漏水的,请各位不吝赐教…

Original: https://www.cnblogs.com/MrVolleyball/p/11606248.html
Author: wilson排球
Title: 深入理解perf报告中的swapper进程

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/363495/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

最近整理资源【免费获取】:   👉 程序员最新必读书单  | 👏 互联网各方向面试题下载 | ✌️计算机核心资源汇总