2015-07-28 91 views
0

我們有一個Cordova應用程序,專用於Android設備,它使用條形碼掃描器插件。應用程序本身作爲對設備的重寫到默認的Android後退按鈕準備:Android上的科爾多瓦條碼掃描器 - 取消掃描並返回到應用程序

document.addEventListener("backbutton", onBackKeyDown, false); 

的問題是,當用戶通過按下返回按鈕來取消掃描,照相機關閉,該應用顯示web視圖,和然後啓動「backbutton」事件(即調用onBackKeyDown函數)。就好像後退按鈕是在webview本身上按下的,而不是在掃描活動上。 我們已經嘗試一些替代品,例如 - 在開始掃描之前,刪除事件監聽器:

function startScan() { 

    document.removeEventListener("backbutton", onBackKeyDown, false); 
    cordova.plugins.barcodeScanner.scan( 
.... 

,但它並沒有幫助。 我們不能在插件本身上覆蓋它,因爲它不是一個活動。這意味着我們必須在JavaScript上做到這一點。

任何解決方案,大多讚賞。

+0

什麼是你的掃描錯誤回調?因爲當你在掃描過程中按回來時,它應該觸發錯誤回調 – AshBringer

+0

否,它會觸發成功處理程序,而不是錯誤處理程序。再次檢查並檢查。 – Shai

回答

0

你還在嗎?我遇到了後退按鈕問題... 我也使用條形碼掃描器插件作爲phonegap,並且有一個用於後退按鈕的事件監聽器。

我最終什麼事做的是補充說,我設置爲true,在每次掃描一個標誌,然後每次調用onBackKeyDown功能 - 如果這是真的,然後重置回假,不執行函數的其餘部分...

var in_barcode_scan = false; 
function onBackKeyDown() { 
    if (in_barcode_scan) { 
     in_barcode_scan = false; 
    } else { 
     //do whatever you need when a legit back button is triggered. 
    } 
} 
function startScan() { 
    in_barcode_scan = true; 
    cordova.plugins.barcodeScanner.scan(..... 
} 

我現在有其他的問題我自己(取消條碼掃描器殺死其他一些事件偵聽器),但是這也許應該做的伎倆你...

Jospeh。

+0

我彈出另一個插件,這是更簡單,並且當用戶點擊後退按鈕時也觸發失敗功能。剛剛測試2天前,掃描本身似乎更好。你可以在這裏找到它:https://github.com/tjwoon/csZBar。 – Shai

0

這對我的作品,我添加了一個messaje掃描儀與警報驗證領域的「result.text]」這樣才取消:

function fileViewSuccess(result) { 
console.log("We got a barcode Result: " + result.text); 
if(result.cancelled == true){ 
alert("Was cancelled"); 
}else{ 
///do something... 
} 
}