Cordova 3.4.0 navigator.camera.getPicture不会为Android 4.3回调onSuccess或onFail

时间:2014-05-22 04:53:17

标签: android cordova phonegap-plugins

我正在使用Cordova 3.4和Camera Plugin(https://github.com/apache/cordova-plugin-camera/blob/master/doc/index.md

当我打电话

navigator.camera.getPicture(onSuccess, onFail, {
        quality: 75,
        destinationType: window.Camera.DestinationType.FILE_URI,
        sourceType: window.Camera.PictureSourceType.CAMERA,
        //allowEdit: true,
        //cameraDirection: window.Camera.Direction.FRONT,
        //encodingType: window.Camera.EncodingType.JPEG,
        //targetWidth: 100,
        //targetHeight: 100,
        //popoverOptions: window.CameraPopoverOptions,
        saveToPhotoAlbum: true
    });
function onSuccess(imageData) {
    alert(imageData);
}
function onFail(message) {
    alert('Failed because: ' + message);
}

此代码适用于Windows Phone 8.1,但不适用于Android 4.3(Jelly Bean)。当我在eclipse中进入代码时,我可以看到它在android临时目录下成功保存了照片,但是在完成时没有调用JavaScript成功或失败事件,这就是为什么我无法在android上获取图像。

我都尝试过Galaxy Note 2真实设备和模拟器,但两者都没有调用onSuccess。

此问题是否存在任何已知问题或解决方法?

3 个答案:

答案 0 :(得分:0)

尝试以下选项:

destinationType: navigator.camera.DestinationType.FILE_URI
sourceType: source
mediaType: media

答案 1 :(得分:0)

如果这不起作用,请让我建议这些选项。他们的工作部署在4.2.2(Jellybean)android和4.4.2(Kitkat)上。

navigator.camera.getPicture(this.onPhotoDataSuccess, this.onFail, {
            quality: 50,
            destinationType: Camera.DestinationType.DATA_URL,
            sourceType: Camera.PictureSourceType.CAMERA

        });

//阅读并附加DOM

onPhotoDataSuccess(imageData) {
        var smallImage = document.getElementById('smallImage');
        smallImage.style.display = 'block';
        smallImage.src = "data:image/jpeg;base64," + imageData;
    }

这将返回base64编码的图像。

答案 2 :(得分:0)

如果它对任何人有帮助,我就会遇到同样的问题。事实证明我正在调用" navigator.camera.cleanup()"在科尔多瓦"暂停"应用程序的事件(因此当应用程序发送到后台时它会清理资源)。这里的问题是相机将应用程序发送到后台,所以显然调用清理工作正在破坏事情。