我正在开发一个Android应用程序,以使用Zxing条码阅读器插件读取条码。
在插件中,有一个名为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);
}
);
}
请让我知道如何实现这一目标。
最佳答案
假设:
您已经从https://github.com/wildabeast/BarcodeScanner/tree/master/src/android设置了LibararyProject。
您的活动不是在扩展CordovaActivity,而是在扩展Activity。
您的主要目标实际上只是使用扫描仪。您只是想找到一种简单/快速的方法,并认为PG插件可以解决问题。
您所需要做的就是从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作为依赖。
关于java - 尝试从Java源代码调用JavaScript函数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20497172/