3

我有一个运行 cordova 3.1.0 的 phonegap (cordova) 应用程序,当我打电话时

navigator.camera.getPicture(success,fail,options)

选项为

var options={ 
        destinationType: navigator.camera.DestinationType.FILE_URI,
        sourceType: navigator.camera.PictureSourceType.SAVEDPHOTOALBUM,
        encodingType: navigator.camera.EncodingType.JPEG,
        mediaType: navigator.camera.MediaType.Picture
}

用户选择照片后不会调用成功回调。

如果我再打电话

navigator.camera.getPicture(success,fail,options)

再次,使用第一步中选择的照片调用第一个 getPicture 的成功回调。

我在 CameraLauncher.java (大约从第 395 行开始)中四处寻找,它似乎调用了

this.callbackContext.success(uri.toString());

onActivtyResult 但这似乎直到下一次 getPicture() 调用才被传回。

还有人遇到这个吗?

进一步挖掘显示从相机调用 getPicture 时也会发生同样的事情。

我想知道是否是因为当相机活动完成时,webview 没有恢复,所以回调无处可去 - 但这充其量只是疯狂的猜测。

24 小时后,似乎更新到 Cordova 3.1.0.jar 并将 3.1 jar 直接放入现有的 3.0 项目中解决了这个问题。

4

2 回答 2

1

所以,发生的事情是,在 Android 上,只有 getPicture 的回调被第二次请求 getPicture 触发。

通过更新我的cordova安装,创建一个空的android项目,然后将/platforms/android/libs/cordova-3.1.0.jar从中复制到我现有项目中的/platforms/android/libs并删除co​​rdova-解决了这个问题3.0.0.jar

希望这可以节省一到三个小时...

于 2013-11-07T08:37:02.490 回答
1

对于条形码扫描仪的类似问题,我尝试了此处记录的解决方案,并且它有效。https://github.com/zeroasterisk/MeteorRider/issues/16 (从这里引用:https ://github.com/wildabeast/BarcodeScanner/issues/107 )

总而言之,Android 事件管道似乎“堵塞”了,您可以在正常的 cordova 插件调用之前运行此代码以清除它。

if (device.platform === 'Android') {
  setInterval(function () {
     cordova.exec(null, null, '', '', [])
  }, 200);
}
于 2014-10-02T18:07:27.237 回答