我有一个运行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);
}