我创建了一个使用phonegap(版本2.5)编辑Android手机联系人(Android 4)的应用程序。一切都还可以,但联系人头像有问题。 (阿凡达从手机库加载,获取头像作为URI)
如果选择大头像(大于1 MB),则无法更新联系人。所以我尝试自动将所有选择的头像重新调整为400x400像素。作为logcat,我可以看到它写入 / storage / sdcard0 / Android / data / {package_name} /cache/resize.jpg 但是在尝试保存时出错
E/ContactsAccessor(28252): /storage/sdcard0/Android/data/{package_name}/cache/resize.jpg?1374660687484: open failed: ENOENT (No such file or directory)
E/ContactsAccessor(10624): java.io.FileNotFoundException: /storage/sdcard0/Android/data/com.lunextelecom.m/cache/resize.jpg?1374718026949: open failed: ENOENT (No such file or directory)
E/ContactsAccessor(10624): at libcore.io.IoBridge.open(IoBridge.java:416)
E/ContactsAccessor(10624): at java.io.FileInputStream.<init>(FileInputStream.java:78)
E/ContactsAccessor(10624): at libcore.net.url.FileURLConnection.connect(FileURLConnection.java:82)
...
我使用文件浏览器检查,图像存在。不知道为什么它可以阅读它。
我还检查并 READ_EXTERNAL_STORAGE 权限设置
如果用户选择大头像,请帮助我解决更新手机联系的此解决方案或任何其他解决方案。非常感谢。
这是我的获取图像代码
var options = {
quality: 75,
destinationType: Camera.DestinationType.FILE_URI,
sourceType: 0, // 0:Photo Library, 1=Camera, 2=Saved Photo Album
encodingType: 0, // 0=JPG 1=PNG
targetWidth: 400,
targetHeight: 400
};
navigator.camera.getPicture( function(imageData) {
image_ctl.setSrc(imageData);
console.log('AVARTA IMG GET'); }, function() {
app.showAlert('Error taking picture', 'Error'); }, options);
答案 0 :(得分:0)
我认为你无法通过navigator.camera.getPicture加载图片。 此功能仅对于从图库中获取图像或从相机捕获照片的打开对话框非常有用。 因此您无法将图像文件数据传输到此功能。我知道这很烦人。
它在文档中显示:
navigator.camera.getPicture(cameraSuccess,cameraError,[cameraOptions]);
描述
camera.getPicture函数打开设备的默认相机应用程序,允许用户拍照。默认情况下,当Camera.sourceType等于Camera.PictureSourceType.CAMERA时,会出现此问题。用户拍摄照片后,相机应用程序将关闭,应用程序将恢复。
如果Camera.sourceType是Camera.PictureSourceType.PHOTOLIBRARY或Camera.PictureSourceType.SAVEDPHOTOALBUM,则会显示一个对话框,允许用户选择现有图像。 camera.getPicture函数返回一个CameraPopoverHandle对象,该对象可用于重新定位图像选择对话框,例如,当设备方向更改时。