我正在开发一个Android应用程序,通过使用Zxing Barcode reader Plugin读取条形码。
在插件中有一个名为window.plugins.barcodeScanner的对象,我们使用它来编码/解码条形码。
我不想使用HTML来调用东西,而是希望从Java调用以下Javascript函数[点击图像 - 将调用以下函数]。
function scanCode(){
window.plugins.barcodeScanner.scan(
function(result){
alert("Scanned Code: " + result.text
+ ". Format: " + result.format
+ ". Cancelled: " + result.cancelled);
},
function(error){
alert("Scan failed: " + error);
}
);
}
请告诉我如何实现这一目标。
答案 0 :(得分:1)
假设:
您需要做的就是从https://github.com/wildabeast/BarcodeScanner/blob/master/src/android/com/phonegap/plugins/barcodescanner/BarcodeScanner.java中提取scan和onActivityResult方法以及一些辅助字符串,并将它们放入您的活动中。您需要将您对cordova的引用替换为您自己的活动。
最终结果可能如下所示:
public static final int REQUEST_CODE = 0x0ba7c0de;
private static final String SCAN_INTENT = "com.google.zxing.client.android.SCAN";
public void scan() {
Intent intentScan = new Intent(SCAN_INTENT);
intentScan.addCategory(Intent.CATEGORY_DEFAULT);
this.startActivityForResult(intentScan, REQUEST_CODE);
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent intent) {
if (requestCode == REQUEST_CODE) {
if (resultCode == Activity.RESULT_OK) {
String barcode = intent.getStringExtra("SCAN_RESULT");
String format = intent.getStringExtra("SCAN_RESULT_FORMAT");
//Do whatever you need with the barcode here
} else if (resultCode == Activity.RESULT_CANCELED) {
// handle a canceled scan
} else {
// throw an error or something
}
}
}
如果这对您有用,那么您甚至不需要Cordova作为依赖。
答案 1 :(得分:0)
您可以使用CordovaWebView中定义的sendJavascript函数在Android上从本机端调用Javascript代码。
在你的情况下,你会做这样的事情。考虑到您要调用以下函数:
function scanSuccessCallback(result) {
//do something
}
在插件的原生端:
this.webView.sendJavascript("scanSuccessCallback('the result');");