2013-07-25 57 views
0

我使用phonegap(版本2.5)創建了一個應用來編輯Android Phone聯繫人(Android 4)。一切還好,但與聯繫人頭像的問題。 (頭像是從手機庫中加載,將頭像作爲URI加載)Phonetop android contacts with avatar resize

如果選擇大頭像(大於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權限設定

請幫我resoleve或任何其他解決方案更新電話聯繫人如果用戶選擇大頭像。非常感謝。

這是我獲取圖像的代碼

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

我認爲你不能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對象,該對象可用於重新定位圖像選擇對話框,例如,當設備方向更改時。