MediaStore.Les Images.Médias.insertImage est de retourner la valeur null lorsque vous essayez d'enregistrer l'image
Je suis en utilisant un affichage personnalisé et que je suis en utilisant un canevas dans lequel un utilisateur peut dessiner n'importe quoi et je veux enregistrer l'image dans la carte sd bt n'a pas été en mesure de le faire. Ne sais pas ce qui se passe.
else if(view.getId()==R.id.save_btn){
//save drawing
AlertDialog.Builder saveDialog = new AlertDialog.Builder(this);
saveDialog.setTitle("Save drawing");
saveDialog.setMessage("Save drawing to device Gallery?");
saveDialog.setPositiveButton("Yes", new DialogInterface.OnClickListener(){
private FileOutputStream fOut;
public void onClick(DialogInterface dialog, int which){
//save drawing
drawView.setDrawingCacheEnabled(true);
//attempt to save
String imgSaved = MediaStore.Images.Media.insertImage(
getContentResolver(), drawView.getDrawingCache(),
UUID.randomUUID().toString()+".png", "drawing");
//feedback
if(imgSaved!=null){
Toast savedToast = Toast.makeText(getApplicationContext(),
"Drawing saved to Gallery!", Toast.LENGTH_SHORT);
savedToast.show();
}
else{
Toast unsavedToast = Toast.makeText(getApplicationContext(),
"Oops! Image could not be saved.", Toast.LENGTH_SHORT);
unsavedToast.show();
}
drawView.destroyDrawingCache();
}
});
saveDialog.setNegativeButton("Cancel", new DialogInterface.OnClickListener(){
public void onClick(DialogInterface dialog, int which){
dialog.cancel();
}
});
saveDialog.show();
}
VOICI LES DÉTAILS DE L'ERREUR
04-14 11:24:28.700: E/MediaStore(6866): Failed to insert image
04-14 11:24:28.700: E/MediaStore(6866): java.io.FileNotFoundException: No such file or directory
04-14 11:24:28.700: E/MediaStore(6866): at android.database.DatabaseUtils.readExceptionWithFileNotFoundExceptionFromParcel(DatabaseUtils.java:146)
04-14 11:24:28.700: E/MediaStore(6866): at android.content.ContentProviderProxy.openAssetFile(ContentProviderNative.java:577)
04-14 11:24:28.700: E/MediaStore(6866): at android.content.ContentResolver.openAssetFileDescriptor(ContentResolver.java:673)
04-14 11:24:28.700: E/MediaStore(6866): at android.content.ContentResolver.openOutputStream(ContentResolver.java:537)
04-14 11:24:28.700: E/MediaStore(6866): at android.content.ContentResolver.openOutputStream(ContentResolver.java:513)
04-14 11:24:28.700: E/MediaStore(6866): at android.provider.MediaStore$Images$Media.insertImage(MediaStore.java:891)
04-14 11:24:28.700: E/MediaStore(6866): at com.example.clent.MainActivity$9.onClick(MainActivity.java:238)
04-14 11:24:28.700: E/MediaStore(6866): at com.android.internal.app.AlertController$ButtonHandler.handleMessage(AlertController.java:166)
04-14 11:24:28.700: E/MediaStore(6866): at android.os.Handler.dispatchMessage(Handler.java:99)
04-14 11:24:28.700: E/MediaStore(6866): at android.os.Looper.loop(Looper.java:137)
04-14 11:24:28.700: E/MediaStore(6866): at android.app.ActivityThread.main(ActivityThread.java:5103)
04-14 11:24:28.700: E/MediaStore(6866): at java.lang.reflect.Method.invokeNative(Native Method)
04-14 11:24:28.700: E/MediaStore(6866): at java.lang.reflect.Method.invoke(Method.java:525)
04-14 11:24:28.700: E/MediaStore(6866): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
04-14 11:24:28.700: E/MediaStore(6866): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
04-14 11:24:28.700: E/MediaStore(6866): at dalvik.system.NativeStart.main(Native Method)
Je suis toujours ce message en essayant de sauver de l'image...."Oups! L'Image n'a pas pu être sauvé.".....
ayant le même problème sur Android 4.4.2 SM-P601. Insérer une image méthode échoue toujours. avec la même exception.
OriginalL'auteur pks | 2014-04-14
Vous devez vous connecter pour publier un commentaire.
J'ai eu ce problème dans l'Émulateur (Android 4.4) et s'avère qu'elle est due à une Android bug, où il se passe lorsque l'utilisateur n'a pas pris une photo sur l'appareil avant (c'est à dire de la galerie est vide et n'a pas été initialisée.). La solution de contournement consiste à initialiser le répertoire photo manuellement:
Ne sais pas si c'est corrigé dans les versions ultérieures d'Android.
Oui. Aime ce commentaire. C'est vrai.
Pour moi, ce qui se passait quand les "Images" (
Environment.DIRECTORY_PICTURES
) répertoire manquait. La création de ce répertoire, il fixe.OriginalL'auteur Dia Kharrat
Un peu en retard de réponse, mais quand même...
Ne savez pas quelle est la ligne 238, mais probablement la raison est ici:
Puisque la méthode est à l'intérieur d'un écouteur de clics
getContentResolver
peut être le retour d'une résolution différente de celle de l'application. Enregistrer un privé de référence pour le contenu de résolution, ou vous pouvez essayer de remplacergetContentResolver
avecMainActivity.this.getContentResolver()
:Alternativement, il pourrait être un permissioning problème. Assurez-vous que dans le manifeste que vous avez:
Une note finale, le résultat de
insertImage
est un URI,imgSaved
n'est pas le meilleur nom de la variable 🙂Pas de travail pour moi ! Android 4.4.2 ici
OriginalL'auteur ılǝ