uni-app 如何優雅的使用權限認證并對本地文件上下起手

這里給大家分享我在網上總結出來的一些知識,希望對大家有所幫助

uni-app 如何優雅的使用權限認證并對本地文件上下起手

文章插圖
1.起因最近有一個需求 , 需要使用自定義插件,來對接硬件功能 , 需要配合對手機的權限進行判斷和提示,并在對接后對本地文件進行操作,這里給大家分享下我的碰到的問題,廢話不多說 , 開搞2.對接自定義插件,制作自定義基座manifest.json:本地插件;云端插件
uni-app 如何優雅的使用權限認證并對本地文件上下起手

文章插圖
本地插件:將插件放到nativeplugins目錄中
uni-app 如何優雅的使用權限認證并對本地文件上下起手

文章插圖
云端插件:
uni-app 如何優雅的使用權限認證并對本地文件上下起手

文章插圖
const TestModule = uni.requireNativePlugin("TestModule")//本地插件const callTrans = uni.requireNativePlugin('ljc-CallTransfer');//云端插件 , 試用使用原生插件,需打包自定義基座若使用試用版插件,則使用公共測試證書 , 傳統打包打開項目vue 文件 —— 點擊運行 —— 選擇運行手機或模擬器 —— 選擇運行基座選擇 —— 選擇自定義基座調試
uni-app 如何優雅的使用權限認證并對本地文件上下起手

文章插圖
點擊運行 —— 選擇運行手機或模擬器 —— 選擇制作自定義調式基座 —— 如圖 選擇 進行打包 —— 打包成功以后將包發送到手機上完成安裝
uni-app 如何優雅的使用權限認證并對本地文件上下起手

文章插圖
點擊運行 —— 選擇運行手機或模擬器 —— 運行到Android App基座—— 如果沒有連接手機需要連接手機(打開usb調式 以及 開發者工具)選擇對應要調試的手機編號 —— 即可進行自定義基座調試 。
uni-app 如何優雅的使用權限認證并對本地文件上下起手

文章插圖
3.權限全判斷 , 調起解決方案這里給大家推薦一個插件,自己照著寫或者直接引入都行
uni-app 如何優雅的使用權限認證并對本地文件上下起手

文章插圖
地址: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 strStatusif (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)// })})}

推薦閱讀