从java-android在控制器中调用javascript方法
我正在创建一个混合的anrdroid应用程序,它使用cordova、ionic和angular。我试图在本机java中单独实现条形码扫描,并且我能够使用JavaScriptInterface从javascript调用java方法。但是我无法将java方法的返回值传递给javascript。有人能在这方面提供帮助吗?当您使用ionic project时,您不需要在本机java代码中实现条形码扫描仪。因为cordova已经有很多插件了。 对于条形码扫描,您最好使用从java-android在控制器中调用javascript方法,javascript,android,angularjs,cordova,Javascript,Android,Angularjs,Cordova,我正在创建一个混合的anrdroid应用程序,它使用cordova、ionic和angular。我试图在本机java中单独实现条形码扫描,并且我能够使用JavaScriptInterface从javascript调用java方法。但是我无法将java方法的返回值传递给javascript。有人能在这方面提供帮助吗?当您使用ionic project时,您不需要在本机java代码中实现条形码扫描仪。因为cordova已经有很多插件了。 对于条形码扫描,您最好使用ionic/cordova条形码扫描
ionic/cordova
条形码扫描插件,这将使您的工作更轻松
但对于您当前的场景:
扫描图像时,将获得图像文件路径。将该路径设置为java活动类中的实例变量。
在您的视图中,使用setInterval计时器并调用javaInterface方法,该方法将返回文件路径。
如果文件路径getter接口返回值,则清除java实例变量和时间间隔
下面是一个示例代码:
@JavascriptInterface
public void scanBarCode() {
Intent intent = new Intent(
"com.google.zxing.client.android.SCAN");
intent.putExtra("SCAN_MODE", "QR_CODE_MODE,PRODUCT_MODE");
startActivityForResult(intent, 0);
}
/** Read barcode from ZXing library */
@JavascriptInterface
public String getBarCode() {
return (barcode!=null ? barcode : "");
}
在onActivityResult的中,您将返回图像url
public void onActivityResult(int requestCode, int resultCode, Intent intent)
现在在您的JS中:
var barcodeTimer = setInterval(function () {
var barcode = Android.getBarCode();
if (barcode != "") {
// set it to your $scope
$scope.$apply();
clearInterval(barcodeTimer);
}
}, 2000);
如果您使用的是cordova,则需要使用插件接口。这正是它的目的。