phonegap (バージョン 2.5) を使用して、Android Phone の連絡先 (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);