Unable to save cropped image - Android -



Unable to save cropped image - Android -

this code got here

public class catfragment extends fragment implements onclicklistener{ private dbcreater dbcreate; private static final int select_picture = 1; private string selectedimagepath = "android.resource://com.example.abcd/" + r.drawable.pets; private imageview img; //private button imgbtn; private uri mcropimageduri; @override public view oncreateview(layoutinflater inflater, viewgroup container, bundle savedinstancestate) { view gv = inflater.inflate(r.layout.new_pet, null); spinner sp = (spinner) gv.findviewbyid(r.id.etpettype); // reference sp.setadapter(new arrayadapter<string>(getactivity().getbasecontext(), android.r.layout.simple_spinner_dropdown_item, pettype)); button btnsubmit = (button) gv.findviewbyid(r.id.buttonnext); btnsubmit.setonclicklistener(this); img = (imageview)gv.findviewbyid(r.id.imageview01); ((button) gv.findviewbyid(r.id.etpetimg)) .setonclicklistener(new onclicklistener() { public void onclick(view arg0) { seek { intent intent = new intent(); intent.settype("image/*"); intent.setaction(intent.action_get_content); intent.putextra("crop", "true"); intent.putextra("aspectx", 0); intent.putextra("aspecty", 0); intent.putextra("outputx", 200); intent.putextra("outputy", 200); intent.putextra("return-data", false); file f = createnewfile("crop_"); seek { f.createnewfile(); } grab (ioexception ex) { log.e("io", ex.getmessage()); } mcropimageduri = uri.fromfile(f); intent.putextra(mediastore.extra_output, mcropimageduri); // start activity - handle returning in // onactivityresult startactivityforresult(intent, select_picture); } grab (activitynotfoundexception anfe) { // display error message } } }); homecoming gv; } private file createnewfile(string prefix){ if(prefix==null || "".equalsignorecase(prefix)){ prefix="img_"; } file newdirectory = new file(environment.getexternalstoragedirectory()+"/android/data/com.example.abcd/files/"); if(!newdirectory.exists()){ if(newdirectory.mkdir()){ log.d(this.getclass().getname(), newdirectory.getabsolutepath()+" directory created"); } } file file = new file(newdirectory,(prefix+system.currenttimemillis()+".jpg")); if(file.exists()){ //this wont executed file.delete(); seek { file.createnewfile(); } grab (ioexception e) { e.printstacktrace(); } } homecoming file; } public void onactivityresult(int requestcode, int resultcode, intent data) { if (resultcode == activity.result_ok) { if (requestcode == select_picture) { uri selectedimageuri = data.getdata(); selectedimagepath = getpath(selectedimageuri); //to image path system.out.println("image path : " + selectedimagepath); img.setimageuri(selectedimageuri); } } } public string getpath(uri uri) { string[] projection = { mediastore.images.media.data }; //cursor cursor = managedquery(uri, projection, null, null, null); cursor cursor = getactivity().getcontentresolver().query(uri, projection, null, null, null); int column_index = cursor.getcolumnindexorthrow(mediastore.images.media.data); cursor.movetofirst(); homecoming cursor.getstring(column_index); } @override public void onactivitycreated(bundle savedinstancestate) { super.onactivitycreated(savedinstancestate); //access database dbcreate = new dbcreater(getactivity()); } @override public void onclick(view v) { displaynextalert(); }

by using code i'm able crop image it's not saving , returns toast message stats unable save cropped image. couldn't see other errors in logcat. please help? in advance.

logcat:

11-15 07:15:38.215: e/androidruntime(27214): fatal exception: main 11-15 07:15:38.215: e/androidruntime(27214): java.lang.runtimeexception: unable resume activity {com.example.abcd/com.example.abcd.mainactivity}: java.lang.runtimeexception: failure delivering result resultinfo{who=android:fragment:0, request=1, result=-1, data=intent { (has extras) }} activity {com.example.abcd/com.example.abcd.mainactivity}: java.lang.nullpointerexception 11-15 07:15:38.215: e/androidruntime(27214): @ android.app.activitythread.performresumeactivity(activitythread.java:2919) 11-15 07:15:38.215: e/androidruntime(27214): @ android.app.activitythread.handleresumeactivity(activitythread.java:2948) 11-15 07:15:38.215: e/androidruntime(27214): @ android.app.activitythread.handlelaunchactivity(activitythread.java:2354) 11-15 07:15:38.215: e/androidruntime(27214): @ android.app.activitythread.access$700(activitythread.java:159) 11-15 07:15:38.215: e/androidruntime(27214): @ android.app.activitythread$h.handlemessage(activitythread.java:1316) 11-15 07:15:38.215: e/androidruntime(27214): @ android.os.handler.dispatchmessage(handler.java:99) 11-15 07:15:38.215: e/androidruntime(27214): @ android.os.looper.loop(looper.java:176) 11-15 07:15:38.215: e/androidruntime(27214): @ android.app.activitythread.main(activitythread.java:5419) 11-15 07:15:38.215: e/androidruntime(27214): @ java.lang.reflect.method.invokenative(native method) 11-15 07:15:38.215: e/androidruntime(27214): @ java.lang.reflect.method.invoke(method.java:525) 11-15 07:15:38.215: e/androidruntime(27214): @ com.android.internal.os.zygoteinit$methodandargscaller.run(zygoteinit.java:1046) 11-15 07:15:38.215: e/androidruntime(27214): @ com.android.internal.os.zygoteinit.main(zygoteinit.java:862) 11-15 07:15:38.215: e/androidruntime(27214): @ dalvik.system.nativestart.main(native method) 11-15 07:15:38.215: e/androidruntime(27214): caused by: java.lang.runtimeexception: failure delivering result resultinfo{who=android:fragment:0, request=1, result=-1, data=intent { (has extras) }} activity {com.example.abcd/com.example.abcd.mainactivity}: java.lang.nullpointerexception 11-15 07:15:38.215: e/androidruntime(27214): @ android.app.activitythread.deliverresults(activitythread.java:3500) 11-15 07:15:38.215: e/androidruntime(27214): @ android.app.activitythread.performresumeactivity(activitythread.java:2906) 11-15 07:15:38.215: e/androidruntime(27214): ... 12 more 11-15 07:15:38.215: e/androidruntime(27214): caused by: java.lang.nullpointerexception 11-15 07:15:38.215: e/androidruntime(27214): @ android.content.contentresolver.acquireunstableprovider(contentresolver.java:1147) 11-15 07:15:38.215: e/androidruntime(27214): @ android.content.contentresolver.query(contentresolver.java:401) 11-15 07:15:38.215: e/androidruntime(27214): @ android.content.contentresolver.query(contentresolver.java:360) 11-15 07:15:38.215: e/androidruntime(27214): @ com.example.abcd.newpetsfragment.getpath(newpetsfragment.java:155) 11-15 07:15:38.215: e/androidruntime(27214): @ com.example.abcd.newpetsfragment.onactivityresult(newpetsfragment.java:143) 11-15 07:15:38.215: e/androidruntime(27214): @ android.app.activity.dispatchactivityresult(activity.java:5567) 11-15 07:15:38.215: e/androidruntime(27214): @ android.app.activitythread.deliverresults(activitythread.java:3496) 11-15 07:15:38.215: e/androidruntime(27214): ... 13 more

i got code work changing saved directory path follows:

file newdirectory = new file(environment.getexternalstoragedirectory()+"/test/");

reason: not save write-protected directory "/android/data/com.example.abcd/files/"

and next changes onactivityresult:

public void onactivityresult(int requestcode, int resultcode, intent data) { if (resultcode == activity.result_ok) { if (requestcode == select_picture) { // uri selectedimageuri = data.getdata(); // selectedimagepath = getpath(selectedimageuri); //to image path selectedimagepath = mcropimageduri.getpath(); //to image path system.out.println("image path : " + selectedimagepath); // img.setimageuri(selectedimageuri); } } }

note: don't need comment out img.setimageuri line. had test purpose.

make sure have added write permission in androidmanifest

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

android image android-intent crop android-externalstorage

Comments

Popular posts from this blog

php - How to pass multiple values from url -

xslt - DocBook 5 to PDF transform failing with error: "fo:flow" is missing child elements. Required content model: marker* -

database - php search bar when I press submit with nothing in the search bar it shows all the data -