android - MediaStore.Images.Media.insertImage is returning null when trying to save the image -


i using custom view , in using canvas in user can draw , after want save image in sd card bt not able that. don't know going on.

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 device gallery?");             savedialog.setpositivebutton("yes", new dialoginterface.onclicklistener(){                 private fileoutputstream fout;                  public void onclick(dialoginterface dialog, int which){                     //save drawing                     drawview.setdrawingcacheenabled(true);                      //attempt 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 gallery!", toast.length_short);                         savedtoast.show();                     }                     else{                         toast unsavedtoast = toast.maketext(getapplicationcontext(),                                  "oops! image not 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();         } 

here error details

04-14 11:24:28.700: e/mediastore(6866): failed 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):     @ android.database.databaseutils.readexceptionwithfilenotfoundexceptionfromparcel(databaseutils.java:146) 04-14 11:24:28.700: e/mediastore(6866):     @ android.content.contentproviderproxy.openassetfile(contentprovidernative.java:577) 04-14 11:24:28.700: e/mediastore(6866):     @ android.content.contentresolver.openassetfiledescriptor(contentresolver.java:673) 04-14 11:24:28.700: e/mediastore(6866):     @ android.content.contentresolver.openoutputstream(contentresolver.java:537) 04-14 11:24:28.700: e/mediastore(6866):     @ android.content.contentresolver.openoutputstream(contentresolver.java:513) 04-14 11:24:28.700: e/mediastore(6866):     @ android.provider.mediastore$images$media.insertimage(mediastore.java:891) 04-14 11:24:28.700: e/mediastore(6866):     @ com.example.clent.mainactivity$9.onclick(mainactivity.java:238) 04-14 11:24:28.700: e/mediastore(6866):     @ com.android.internal.app.alertcontroller$buttonhandler.handlemessage(alertcontroller.java:166) 04-14 11:24:28.700: e/mediastore(6866):     @ android.os.handler.dispatchmessage(handler.java:99) 04-14 11:24:28.700: e/mediastore(6866):     @ android.os.looper.loop(looper.java:137) 04-14 11:24:28.700: e/mediastore(6866):     @ android.app.activitythread.main(activitythread.java:5103) 04-14 11:24:28.700: e/mediastore(6866):     @ java.lang.reflect.method.invokenative(native method) 04-14 11:24:28.700: e/mediastore(6866):     @ java.lang.reflect.method.invoke(method.java:525) 04-14 11:24:28.700: e/mediastore(6866):     @ com.android.internal.os.zygoteinit$methodandargscaller.run(zygoteinit.java:737) 04-14 11:24:28.700: e/mediastore(6866):     @ com.android.internal.os.zygoteinit.main(zygoteinit.java:553) 04-14 11:24:28.700: e/mediastore(6866):     @ dalvik.system.nativestart.main(native method) 

i getting message while trying save image...."oops! image not saved.".....

i had issue in emulator (android 4.4) , turns out it's due android bug, happens when user hasn't taken photo on device before (i.e. gallery empty , hasn't been initialized.). workaround initialize photo directory manually:

void fixmediadir() {     file sdcard = environment.getexternalstoragedirectory();     if (sdcard != null) {         file mediadir = new file(sdcard, "dcim/camera");         if (!mediadir.exists()) {             mediadir.mkdirs();         }     } } 

not sure if fixed in later versions of android.


Comments

Popular posts from this blog

windows - Single EXE to Install Python Standalone Executable for Easy Distribution -

c# - Access objects in UserControl from MainWindow in WPF -

javascript - How to name a jQuery function to make a browser's back button work? -