Phonegap|Android 4 - 从 PHOTOLIBRARY 拍照时,应用程序有时会崩溃
Posted
技术标签:
【中文标题】Phonegap|Android 4 - 从 PHOTOLIBRARY 拍照时,应用程序有时会崩溃【英文标题】:Phonegap|Android 4 - App sometimes crashes when taking picture from PHOTOLIBRARY 【发布时间】:2012-07-13 12:23:48 【问题描述】:我使用以下代码在 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。使用相机获取照片没有问题。但是,当我多次尝试从图库中拍照时,应用程序经常崩溃(没有任何有用的错误)不是一直而是经常在不同的周期中崩溃。 (有时是第三次从图库中挑选图像,有时是第五次等等)
我不知道问题的原因可能是什么,因为该应用没有给我任何关于它遇到的问题的反馈......
【问题讨论】:
您使用的是哪个版本的 Phonegap?我已经为即将发布的 2.0.0 修复了很多相机问题。另外,运行“adb logcat”以查看来自操作系统的错误。 【参考方案1】:我在 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 没有问题。
【讨论】:
【参考方案2】:我突然在 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 在需要更多内存时关闭打开的应用程序,例如当它打开网络摄像头时。
【讨论】:
【参考方案3】:设备是否已植根?如果是这样,您可以使用 logcat 程序(例如 alogcat)来尝试帮助。
【讨论】:
你不需要root设备来使用logcat,它是Android SDK的一部分。 啊,我只在设备上使用过它,我认为你需要扎根。 啊!我完全忘记了,您需要先单击“设备”选项卡中的设备,才能查看任何 logcat 输出...感谢您的回答。以上是关于Phonegap|Android 4 - 从 PHOTOLIBRARY 拍照时,应用程序有时会崩溃的主要内容,如果未能解决你的问题,请参考以下文章
如何在phonegap上使用GCM处理android中的多个推送通知
Phonegap Facebook 插件 - 从 Android 设备中删除应用程序后密钥哈希无效
Phonegap 2.5.0 地理定位不适用于 android 4.0.4