Phonegap | Android 4 - 从PHOTOLIBRARY拍照时,应用程序有时会崩溃

时间:2012-07-13 12:23:49

标签: android cordova photolibrary

我使用以下代码从画廊或相机中获取Phonegap(cordova 1.9.0)中的照片并将其包含在页面中:

function getPhotoByGallery() {
    navigator.camera.getPicture(onPhotoSuccess, onFail, {
        quality : 50,
        destinationType: navigator.camera.DestinationType.FILE_URI,
        sourceType: navigator.camera.PictureSourceType.PHOTOLIBRARY
    });
}

function getPhotoByCamera() {
    navigator.camera.getPicture(onPhotoSuccess, onFail, {
        quality : 50
    });
}

function onPhotoSuccess(data) {
    var viewport = document.getElementById('viewport');
    //console.log(data);
    viewport.style.display = "";
    document.getElementById("test_img").src = data;
}

测试设备:使用Android 4的三星Galaxy S3使用相机获取照片是没有问题的。但是当我尝试多次从画廊拍摄照片时,应用程序频繁崩溃(没有任何有用的错误)不是所有的时间,而是经常和不同的周期。 (有时在第三次从画廊中选择图像时,有时是第五次,等等)

我不知道问题的原因是什么,因为应用程序没有给我任何反馈它遇到的问题......

3 个答案:

答案 0 :(得分:0)

我在2天内遇到同样的问题,直到我知道您应该获得获取设备中的图像文件的权限。默认情况下,没有返回图像的权限,因此它返回null并且您的应用程序崩溃。

如果您在XCode中使用Cordova / PhoneGap,那么您还应该在www文件夹中创建Config.xml文件并授予访问该图像文件的权限。

<feature name="http://api.phonegap.com/1.0/device" />
<feature name="http://api.phonegap.com/1.0/battery"/>
<feature name="http://api.phonegap.com/1.0/camera"/>
<feature name="http://api.phonegap.com/1.0/contacts"/>
<feature name="http://api.phonegap.com/1.0/file"/>
<feature name="http://api.phonegap.com/1.0/geolocation"/>
<feature name="http://api.phonegap.com/1.0/media"/>
<feature name="http://api.phonegap.com/1.0/network"/>
<feature name="http://api.phonegap.com/1.0/notification"/>

如果您正在使用Android,请在AndroidManifest.xml文件上授予权限。

您可以在此处找到config.xml文件的所有内容: https://build.phonegap.com/docs/config-xml

Cordova / PhoneGap没有问题。

答案 1 :(得分:0)

对于在Android 4(三星Galaxy III)和PhoneGap 2.0(通过PhoneGap Build构建)上运行的应用程序,我突然遇到同样的问题。

作为一个侧面点,唯一需要的权限是:

<feature name="http://api.phonegap.com/1.0/camera"/>
<feature name="http://api.phonegap.com/1.0/file"/>
我设置的

(适用于Android 2.2手机)。

<强>更新 在进一步测试之后,事实证明问题是一个众所周知的问题,当Android需要更多内存时关闭打开的应用程序,例如:当它打开网络摄像头时。

答案 2 :(得分:-1)

设备是否已植根?如果是这样,你可以使用logcat程序(例如alogcat)来尝试和帮助。