2015-07-28 94 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... 
} 
}