我使用以下代码从画廊或相机中获取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使用相机获取照片是没有问题的。但是当我尝试多次从画廊拍摄照片时,应用程序频繁崩溃(没有任何有用的错误)不是所有的时间,而是经常和不同的周期。 (有时在第三次从画廊中选择图像时,有时是第五次,等等)
我不知道问题的原因是什么,因为应用程序没有给我任何反馈它遇到的问题......
答案 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)来尝试和帮助。