J'essaie d'obtenir une image de l'application Galerie à partir de l'un des dossiers des photos synchronisées de Google+. Après avoir sélectionné l'image, l'Uri est renvoyé correctement. Mais lorsque j'essaie d'obtenir le chemin d'accès réel de cette image sur le périphérique de stockage, afin de pouvoir l'utiliser, l'application se bloque. Le problème semble être spécifiquement lié à l'option fournisseur de contenu picasa .
Testé sur Nexus S et Nexus 7, ainsi que sur d'autres appareils.
E/AndroidRuntime(14572): java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=1, result=-1, data=Intent { dat=content://com.google.android.gallery3d.provider/picasa/item/5427003652908228690 }}
Ici, le champ dat semble transmettre correctement l'Uri, mais lorsque j'essaie de récupérer l'emplacement de l'image, le système se bloque avec l'erreur suivante.
W/GalleryProvider(14381): unsupported column: \_data
Il semble que le fournisseur de contenu pour les albums Picasa ne dispose pas d'un champ _data.
Le code pour obtenir l'emplacement est :
// imageUri is the Uri from above.
String\[\] proj = { MediaStore.Images.Media.DATA };
Cursor cursor = context.getContentResolver().query(imageUri, proj,null, null, null);
int column\_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
cursor.moveToFirst();
String filePath = cursor.getString(column\_index);
cursor.close();
Les seules colonnes qui semblent être supportées pour cette image sont : [user_account, picasa_id, _display_name, _size, mime_type, datetaken, latitude, longitude, orientation].
Comment obtenir l'emplacement réel de cette image. Et si nous ne sommes pas censés travailler avec cette image, ces images ne devraient pas être montrées à l'utilisateur en premier lieu.
L'intention de lancer l'application de la galerie est :
Intent intent = new Intent();
intent.setType("image/\*");
intent.setAction(Intent.ACTION\_GET\_CONTENT);