uniapp開發(fā)安卓App注意事項(xiàng)
-
使用安卓調(diào)試基座進(jìn)行調(diào)試大大降低了uniapp開發(fā)安卓app的門檻
-
安卓開發(fā)經(jīng)常需要調(diào)用到安卓原生的api,例如廣播,掃碼,相機(jī)等等,uniapp內(nèi)置了App端的HTML5+規(guī)范,可以使用js直接調(diào)用豐富的原生能力。例如在安卓中調(diào)用原生的激光掃描能力:
let main, receiver, filter, intentInstance let scanFlag = false // 是否開啟了激光掃描,默認(rèn)關(guān)閉 /** * 初始化激光掃描 * @param {String} broadcastAction 廣播動(dòng)作 * @param {String} broadcastTag 廣播標(biāo)簽 */ function initScan(broadcastAction, broadcastTag) { // 條件編譯 HTML5+ 擴(kuò)展規(guī)范,否則運(yùn)行到h5、小程序等平臺(tái)會(huì)出現(xiàn) plus is not defined 錯(cuò)誤 // #ifdef APP-PLUS // 獲取Android主Activity main = plus.android.runtimeMainActivity() // 獲取Android意圖過(guò)濾類 let IntentFilter = plus.android.importClass('android.content.IntentFilter') // 實(shí)例化意圖過(guò)濾 filter = new IntentFilter() // 獲取意圖廣播,addAction內(nèi)改為廣播動(dòng)作 filter.addAction(broadcastAction) receiver = plus.android.implements('io.dcloud.feature.internal.reflect.BroadcastReceiver', { onReceive: function (context, intent) { plus.android.importClass(intent) // getStringExtra內(nèi)改為廣播標(biāo)簽 let code = intent.getStringExtra(broadcastTag) console.log('廣播監(jiān)聽掃描信息 ==== code :', code) emits('getCode', code) } }) // #endif } function startScan() { // #ifdef APP-PLUS if (!scanFlag) { main.registerReceiver(receiver, filter) console.log('==== 開啟掃描') scanFlag = true } // #endif } function stopScan() { // #ifdef APP-PLUS if (scanFlag) { main.unregisterReceiver(receiver) console.log('==== 關(guān)閉掃描') scanFlag = false } // #endif } /** * 手動(dòng)調(diào)用掃描 (非PDA物理按鍵) * @param {Object} keyAction 按鍵廣播動(dòng)作 */ function clickToScan(keyAction) { // #ifdef APP-PLUS // 獲取Android意圖類 let Intent = plus.android.importClass('android.content.Intent') // 實(shí)例化意圖 intentInstance = new Intent() // 定義意圖,模擬按下激光的物理按鍵映射,由廠商提供 intentInstance.setAction(keyAction) // 廣播這個(gè)意圖 main.sendBroadcast(intentInstance) // #endif } onMounted(() => { // PDA設(shè)備 (廠商提供) 廣播動(dòng)作:android.intent.ACTION_DECODE_DATA,廣播標(biāo)簽:barcode_string initScan('android.intent.ACTION_DECODE_DATA', 'barcode_string') // 開啟掃描 startScan() }) onUnmounted(() => { // 關(guān)閉掃描 stopScan() })
該plus對(duì)象便是uniapp內(nèi)置的HTML5+規(guī)范,無(wú)需引入,直接使用,但是建議搭配條件編譯寫法,否則會(huì)在其他端報(bào) plus is not defined 錯(cuò)誤
HTML5+官方文檔 HTML5+規(guī)范
-
除了使用HTML5+規(guī)范調(diào)用安卓原生能力,uniapp官方也對(duì)uni對(duì)象內(nèi)置了相關(guān)設(shè)備方法
官方文檔 系統(tǒng)設(shè)備文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-841624.html
例如調(diào)用相機(jī)掃碼文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-841624.html
function onCameraScan() { // #ifdef APP uni.scanCode({ success: function (res) { scanCode.value = res.result console.log('掃描成功--->', scanCode.value) }, fail: function (err) { console.log('掃描失敗--->', err) }, complete: function (res) { console.log('掃描完成--->', res) } }) // #endif }
到了這里,關(guān)于uniapp開發(fā)安卓App注意事項(xiàng)(HTML5+規(guī)范 plus調(diào)用安卓原生能力:廣播,掃描,相機(jī)等)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!