我使用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);