navigator.camera.getPicture 回调直到第二次调用才执行



我有一个运行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时也会发生同样的事情。

我想知道这是否是因为当相机活动完成时,网络视图尚未恢复,因此回调无处可去 - 但这充其量只是疯狂的猜测。

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

所以,在Android上,只有getPicture的回调是通过第二次请求getPicture来触发的。

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

希望这可以节省某人一个小时或 3 个小时......

我尝试了此处记录的解决方案,以解决条形码扫描仪的类似问题,并且它奏效了。 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);
}

相关内容

  • 没有找到相关文章

最新更新