2010-08-13 10 views
0

J'ai une application qui permet à l'utilisateur de prendre et de sauvegarder une nouvelle image en utilisant l'intention ACTION_IMAGE_CAPTURE. Une fois que l'utilisateur a accepté la nouvelle image, je crée un objet ContentValue pour définir les informations sur l'image, puis j'insère l'image dans le MediaStore et j'envoie une diffusion pour que l'utilisateur puisse voir la photo lors de l'ouverture d'une application. :Android MediaStore paramètre le nom de la photo à NULL

ContentValues newImage = new ContentValues(3); 

newImage.put(Media.DISPLAY_NAME, mPicName); 
newImage.put(Media.MIME_TYPE, "image/png"); 
newImage.put(MediaStore.Images.Media.DATA, path); 

mPictureUri = getContentResolver().insert(Media.EXTERNAL_CONTENT_URI, newImage); 

sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, mPictureUri)); 

Tout ce code fonctionne correctement. La photo est correctement enregistrée, et je peux voir la photo en utilisant la galerie. Le problème est que lorsque je vois la photo dans la galerie et sélectionnez "Détails", il montre le nom de la photo comme "null". Et oui, je sais pertinemment que la variable mPicName ci-dessus n'est pas nulle et a toujours la valeur correcte. La chose étrange est que, lors de l'exécution de mon application sur mon Droid sous Android 2.1, lorsque je choisis de copier des fichiers vers/depuis le téléphone et mon ordinateur, j'ouvre le Droid sur mon ordinateur Windows, et quand je vais dans le dossier créé de mon application pour les photos et afficher la nouvelle photo, le nom est correct. Ensuite, quand je désactive la copie des fichiers du téléphone/ordinateur et retourne dans la galerie pour voir le fichier sur mon Droid, le nom est soudainement correct et n'est plus nul.

Quelqu'un peut-il me dire pourquoi le nom est nul après l'exécution de mon code, et pourquoi le nom est correct après avoir vu le fichier sur mon ordinateur plutôt que sur le téléphone? Est-il possible d'obtenir le nom non nul juste lorsque l'image est enregistrée? Je parierais que le nom serait correct si j'éteignais et rallumais mon téléphone, mais je ne sais pas exactement comment faire fonctionner les choses immédiatement.

Répondre