這里給大家分享我在網(wǎng)上總結(jié)出來(lái)的一些知識(shí),希望對(duì)大家有所幫助
1.起因
最近有一個(gè)需求,需要使用自定義插件,來(lái)對(duì)接硬件功能,需要配合對(duì)手機(jī)的權(quán)限進(jìn)行判斷和提示,并在對(duì)接后對(duì)本地文件進(jìn)行操作,這里給大家分享下我的碰到的問(wèn)題,廢話不多說(shuō),開(kāi)搞
2.對(duì)接自定義插件,制作自定義基座
manifest.json:本地插件;云端插件
本地插件:
將插件放到nativeplugins目錄中
?云端插件:?
const TestModule = uni.requireNativePlugin("TestModule")//本地插件 const callTrans = uni.requireNativePlugin('ljc-CallTransfer');//云端插件,試用
使用原生插件,需打包自定義基座
若使用試用版插件,則使用公共測(cè)試證書(shū),傳統(tǒng)打包
打開(kāi)項(xiàng)目vue 文件 —— 點(diǎn)擊運(yùn)行 —— 選擇運(yùn)行手機(jī)或模擬器 —— 選擇運(yùn)行基座選擇 —— 選擇自定義基座調(diào)試
點(diǎn)擊運(yùn)行 —— 選擇運(yùn)行手機(jī)或模擬器 —— 選擇制作自定義調(diào)式基座 —— 如圖 選擇 進(jìn)行打包 —— 打包成功以后將包發(fā)送到手機(jī)上完成安裝
點(diǎn)擊運(yùn)行 —— 選擇運(yùn)行手機(jī)或模擬器 —— 運(yùn)行到Android App基座—— 如果沒(méi)有連接手機(jī)需要連接手機(jī)(打開(kāi)usb調(diào)式 以及 開(kāi)發(fā)者工具)選擇對(duì)應(yīng)要調(diào)試的手機(jī)編號(hào) —— 即可進(jìn)行自定義基座調(diào)試。愛(ài)掏網(wǎng) - it200.com
?3.權(quán)限全判斷,調(diào)起解決方案
這里給大家推薦一個(gè)插件,自己照著寫(xiě)或者直接引入都行
?地址:https://ext.dcloud.net.cn/plugin?id=594#detail
核心方法展示:
方法一
// 檢查系統(tǒng)的設(shè)備服務(wù)是否開(kāi)啟 // var checkSystemEnableLocation = async function () { function checkSystemEnableLocation() { if (isIos) { var result = false; var cllocatiOnManger= plus.ios.import("CLLocationManager"); var result = cllocationManger.locationServicesEnabled(); console.log("系統(tǒng)定位開(kāi)啟:" + 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("系統(tǒng)定位開(kāi)啟:" + result); return result } }
方法二
// vue的method里編寫(xiě)如下代碼 async requestAndroidPermission(permisionID) { var result = await permision.requestAndroidPermission(permisionID) var strStatus if (result == 1) { strStatus = "已獲得授權(quán)" } else if (result == 0) { strStatus = "未獲得授權(quán)" } else { strStatus = "被永久拒絕權(quán)限" } uni.showModal({ content: permisionID + strStatus, showCancel: false }); },
4.對(duì)本地文件上下起手
這里是最有意思的部分,也是我在網(wǎng)上找資料找得最多的一個(gè)難點(diǎn)
這里給大家分享我寫(xiě)好的兩個(gè)類型之中的方法,查找和刪除,希望對(duì)大家有所幫助
獲取指定目錄里的文件方法一
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
獲取指定目錄里的文件方法二
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
刪除指定路徑里的文件方法
deleteDirFun(url) { uni.showLoading({ title: '刪除中' }); plus.io.resolveLocalFileSystemURL(url, ( entry) => { entry.remove() uni.hideLoading(); //讀取這個(gè)目錄對(duì)象 // const directoryReader = entry.createReader(); // directoryReader.readEntries((entries)=>{ // console.log(entries.length) // }) }) }
到這里,有關(guān)的所有東西分享完畢,如果對(duì)您有所幫助,歡迎您點(diǎn)個(gè)關(guān)注,我會(huì)定時(shí)更新技術(shù)文檔,大家一起討論學(xué)習(xí),一起進(jìn)步。愛(ài)掏網(wǎng) - it200.com
?
聲明:所有內(nèi)容來(lái)自互聯(lián)網(wǎng)搜索結(jié)果,不保證100%準(zhǔn)確性,僅供參考。如若本站內(nèi)容侵犯了原著者的合法權(quán)益,可聯(lián)系我們進(jìn)行處理。