2010-08-13 5 views
0

J'ai utilisé ce code snippet:Comment enregistrer une image au fournisseur de médias dans Android?

ContentValues image = new ContentValues(); 

image.put(Images.Media.TITLE, "ImageTitle"); 
image.put(Images.Media.DISPLAY_NAME, "Heart"); 
image.put(Images.Media.DESCRIPTION, "Heart"); 
image.put(Images.Media.DATE_ADDED, dateTaken); 
image.put(Images.Media.DATE_TAKEN, dateTaken); 
image.put(Images.Media.DATE_MODIFIED, dateTaken); 
image.put(Images.Media.MIME_TYPE, "image/png"); 
image.put(Images.Media.ORIENTATION, 0); 

File parent = imageFile.getParentFile(); 
String path = parent.toString().toLowerCase(); 
String name = parent.getName().toLowerCase(); 
image.put(Images.ImageColumns.BUCKET_ID, path.hashCode()); 
image.put(Images.ImageColumns.BUCKET_DISPLAY_NAME, name); 
image.put(Images.Media.SIZE, imageFile.length()); 

image.put("_data", imageFile.getAbsolutePath()); 

getContentResolver().insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, image); 

Je crée l'image dans le répertoire de cache de mon application. Je suppose que l'image n'est pas copiée dans le dossier des médias par le fournisseur de médias et donc pas accessible à partir de l'application de la galerie de médias. Est-il possible d'ajouter une image à la galerie de médias sans écrire le fichier sur le stockage de masse du téléphone?

Répondre

2

Je pense que la réponse que vous cherchez est décrit here. La deuxième partie de cette section décrit la sauvegarde des images. L'essentiel de ce qui semble être que vous insérez l'objet contentValues ​​dans le résolveur contenu, qui retourne un objet Uri que le ContentResolver est prêt à se transformer en un OutputStream pour vous que vous pouvez écrire à l'image. Le lien fourni inclut le code réel dont vous auriez besoin pour le faire.

Questions connexes