Friday, 15 August 2014

java - Saving image to external storage not working in android -



java - Saving image to external storage not working in android -

in android app, want store image external storage. have code:

package async; import java.io.file; import java.io.fileoutputstream; import java.io.outputstream; import http.network; import interfaces.imagedownloader; import android.app.activity; import android.content.context; import android.graphics.bitmap; import android.os.asynctask; import android.os.environment; import android.provider.mediastore; import android.util.log; import android.widget.imageview; public class async_image_task extends asynctask<string, void, bitmap> { imagedownloader callercontext; imageview calledimageview; string link; public async_image_task(imageview calledimageview, string link) { this.callercontext = (imagedownloader)calledimageview.getcontext(); this.calledimageview = calledimageview; this.link = link; execute(link); } @override protected bitmap doinbackground(string... params) { bitmap bitmap = network.downloadimage((context) callercontext, params[0]); if (bitmap != null) { seek { string[] segments = link.split("/"); int len = segments.length; string path = environment.getexternalstoragedirectory().getabsolutepath(); string imgpath = segments[len-6] + "/" + segments[len-2] + "/" + segments[len-1]; file file = new file(path, imgpath); file.getparentfile().mkdirs(); string abs = file.getabsolutepath(); outputstream fout = new fileoutputstream(file); bitmap.compress(bitmap.compressformat.png, 100, fout); fout.flush(); fout.close(); mediastore.images.media.insertimage(((activity)callercontext).getcontentresolver(),abs,file.getname(),file.getname()); } grab (exception e) { log.d("image_error", e.getmessage()); } } homecoming bitmap; } @override protected void onpostexecute(bitmap bitmap) { callercontext.imagecallback(bitmap, calledimageview); } }

and in manifest have permission:

<uses-permission android:name="android.permission.read_external_storage" /> <uses-permission android:name="android.permission.write_external_storage" />

but when tries execute outputstream fout = new fileoutputstream(file);, throws filenot found exception....

error:

06-18 17:48:35.573: d/image_error(9316): /storage/sdcard0/arin/53/image.jpg: open failed: eacces (permission denied)

why happening, when have permission?

does know?

thanks

logcat

06-18 18:03:57.522: w/system.err(14213): java.io.filenotfoundexception: /storage/sdcard0/arin/53/image.jpg: open failed: eacces (permission denied) 06-18 18:03:57.532: w/system.err(14213): @ libcore.io.iobridge.open(iobridge.java:416) 06-18 18:03:57.532: w/system.err(14213): @ java.io.fileoutputstream.<init>(fileoutputstream.java:88) 06-18 18:03:57.532: w/system.err(14213): @ java.io.fileoutputstream.<init>(fileoutputstream.java:128) 06-18 18:03:57.532: w/system.err(14213): @ java.io.fileoutputstream.<init>(fileoutputstream.java:117) 06-18 18:03:57.532: w/system.err(14213): @ async.async_image_task.saveimage(async_image_task.java:64) 06-18 18:03:57.532: w/system.err(14213): @ async.async_image_task.doinbackground(async_image_task.java:37) 06-18 18:03:57.532: w/system.err(14213): @ async.async_image_task.doinbackground(async_image_task.java:1) 06-18 18:03:57.532: w/system.err(14213): @ android.os.asynctask$2.call(asynctask.java:287) 06-18 18:03:57.532: w/system.err(14213): @ java.util.concurrent.futuretask$sync.innerrun(futuretask.java:305) 06-18 18:03:57.532: w/system.err(14213): @ java.util.concurrent.futuretask.run(futuretask.java:137) 06-18 18:03:57.532: w/system.err(14213): @ android.os.asynctask$serialexecutor$1.run(asynctask.java:230) 06-18 18:03:57.532: w/system.err(14213): @ java.util.concurrent.threadpoolexecutor.runworker(threadpoolexecutor.java:1076) 06-18 18:03:57.542: w/system.err(14213): @ java.util.concurrent.threadpoolexecutor$worker.run(threadpoolexecutor.java:569) 06-18 18:03:57.542: w/system.err(14213): @ java.lang.thread.run(thread.java:856) 06-18 18:03:57.542: w/system.err(14213): caused by: libcore.io.errnoexception: open failed: eacces (permission denied) 06-18 18:03:57.542: w/system.err(14213): @ libcore.io.posix.open(native method) 06-18 18:03:57.542: w/system.err(14213): @ libcore.io.blockguardos.open(blockguardos.java:110) 06-18 18:03:57.542: w/system.err(14213): @ libcore.io.iobridge.open(iobridge.java:400) 06-18 18:03:57.542: w/system.err(14213): ... 13 more

the directory trying create file may not exist. seek line before phone call new fileoutputstream:

file.mkdirs();

java android image save external

No comments:

Post a Comment