java - Unable to Save Image on SDCard Android -


i using below code save images sdcard unable ,

here code

try {                 root.mkdirs();                 file sdimagemaindirectory = new file(root, myid + "__" + filename);                 outputfileuri = uri.fromfile(sdimagemaindirectory);                 fout = new fileoutputstream(sdimagemaindirectory);                           bm.compress(bitmap.compressformat.png, 100, fout);                               fout.flush();                 fout.close();                 toast.maketext(this, "image saved",toast.length_short).show();             } catch (exception e) {                 e.printstacktrace();             } 

here error

04-14 13:34:07.723: w/system.err(23073): java.io.filenotfoundexception: /mnt/sdcard/android/data/com.goldenedge.poetry/urdu/festive poetry/4__311159_248676158509124_848180994_n.jpg 04-14 13:34:07.724: w/system.err(23073): : open failed: einval (invalid argument) 04-14 13:34:07.725: w/system.err(23073):    @ libcore.io.iobridge.open(iobridge.java:448) 04-14 13:34:07.726: w/system.err(23073):    @ java.io.fileoutputstream.<init>(fileoutputstream.java:88) 04-14 13:34:07.726: w/system.err(23073):    @ java.io.fileoutputstream.<init>(fileoutputstream.java:73) 04-14 13:34:07.726: w/system.err(23073):    @ com.golden.viewimage.onoptionsitemselected(viewimage.java:106) 04-14 13:34:07.727: w/system.err(23073):    @ android.app.activity.onmenuitemselected(activity.java:2526) 04-14 13:34:07.727: w/system.err(23073):    @ com.android.internal.policy.impl.phonewindow.onmenuitemselected(phonewindow.java:966) 04-14 13:34:07.727: w/system.err(23073):    @ com.android.internal.view.menu.menubuilder.dispatchmenuitemselected(menubuilder.java:735) 04-14 13:34:07.727: w/system.err(23073):    @ com.android.internal.view.menu.menuitemimpl.invoke(menuitemimpl.java:149) 04-14 13:34:07.728: w/system.err(23073):    @ com.android.internal.view.menu.menubuilder.performitemaction(menubuilder.java:874) 04-14 13:34:07.728: w/system.err(23073):    @ com.android.internal.view.menu.iconmenuview.invokeitem(iconmenuview.java:468) 04-14 13:34:07.728: w/system.err(23073):    @ com.android.internal.view.menu.iconmenuitemview.performclick(iconmenuitemview.java:126) 04-14 13:34:07.728: w/system.err(23073):    @ android.view.view$performclick.run(view.java:14155) 04-14 13:34:07.729: w/system.err(23073):    @ android.os.handler.handlecallback(handler.java:605) 04-14 13:34:07.729: w/system.err(23073):    @ android.os.handler.dispatchmessage(handler.java:92) 04-14 13:34:07.729: w/system.err(23073):    @ android.os.looper.loop(looper.java:137) 04-14 13:34:07.730: w/system.err(23073):    @ android.app.activitythread.main(activitythread.java:4666) 04-14 13:34:07.730: w/system.err(23073):    @ java.lang.reflect.method.invokenative(native method) 04-14 13:34:07.730: w/system.err(23073):    @ java.lang.reflect.method.invoke(method.java:511) 04-14 13:34:07.731: w/system.err(23073):    @ com.android.internal.os.zygoteinit$methodandargscaller.run(zygoteinit.java:809) 04-14 13:34:07.731: w/system.err(23073):    @ com.android.internal.os.zygoteinit.main(zygoteinit.java:576) 04-14 13:34:07.731: w/system.err(23073):    @ dalvik.system.nativestart.main(native method) 04-14 13:34:07.732: w/system.err(23073): caused by: libcore.io.errnoexception: open failed: einval (invalid argument) 04-14 13:34:07.733: w/system.err(23073):    @ libcore.io.posix.open(native method) 04-14 13:34:07.733: w/system.err(23073):    @ libcore.io.blockguardos.open(blockguardos.java:110) 04-14 13:34:07.733: w/system.err(23073):    @ libcore.io.iobridge.open(iobridge.java:432) 04-14 13:34:07.734: w/system.err(23073):    ... 20 more 

change root path :

root = new file(environment.getexternalstoragedirectory() + file.separator + "android/data/com.goldenedge.poetry" + filecatpath); 

to :

    root = new file(getfullfilepath(environment.getexternalstoragedirectory()+"/android/data/com.goldenedge.poetry/urdu/festive poetry","4__311159_248676158509124_848180994_n.jpg "));   public string getfullfilepath(string filepath,string filename) {          file dir = new file(filepath);         if (!dir.exists()) {             dir.mkdirs();         }         return filepath + filename;     } 

use method check directory isexist() or not, there many devices invalidated file name special characters give invalid arguments error.


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? -