android - App crashes when On onActivityResult with Galaxy S4 -


i have activity takes picture , set imageview image captured, , uploads parse. works fine lg g4, galaxy s4 crashes after press button says want picture, crashes in onactivityresult function. see in log there nullpointerexception, guess because galaxy s4 has less memory lg g4. think understand problem(my assumption memory), have no clue how tackle it.

the activity

import android.content.intent; import android.content.sharedpreferences; import android.graphics.bitmap; import android.graphics.bitmapfactory; import android.graphics.canvas; import android.graphics.matrix; import android.graphics.paint; import android.graphics.porterduff; import android.graphics.porterduffxfermode; import android.graphics.rect; import android.graphics.rectf; import android.graphics.drawable.bitmapdrawable; import android.graphics.drawable.drawable; import android.net.uri; import android.os.bundle; import android.os.environment; import android.os.persistablebundle; import android.preference.preferencemanager; import android.provider.mediastore; import android.support.v7.app.appcompatactivity; import android.support.v7.widget.toolbar; import android.view.view; import android.widget.button; import android.widget.imageview; import android.widget.toast;  import com.parse.findcallback; import com.parse.getdatacallback; import com.parse.parseexception; import com.parse.parsefile; import com.parse.parseobject; import com.parse.parsequery;  import java.io.bytearrayoutputstream; import java.io.file; import java.text.simpledateformat; import java.util.date; import java.util.list;  public class situationstatusactivity extends appcompatactivity {      imageview imvcature_pic_nir;     imageview imvcature_pic_sharon;      private static final int request_code = 1;      string imagefilepath;     public sharedpreferences startexplepref;     public string user;      @override     protected void oncreate(bundle savedinstancestate) {         super.oncreate(savedinstancestate);         setcontentview(r.layout.activity_situation_status);         if(savedinstancestate!=null){             imagefilepath = savedinstancestate.getstring("path");         }         toolbar toolbar = (toolbar) findviewbyid(r.id.toolbar);         setsupportactionbar(toolbar);          overridependingtransition(r.anim.fadein, r.anim.fadeout);  //       user         startexplepref = preferencemanager.getdefaultsharedpreferences(this);         user = startexplepref.getstring("user", ""); //        upload nir pic          string timestamp = new simpledateformat("yyyymmdd_hhmmss").format(new date());         imagefilepath = environment.getexternalstoragedirectory().tostring() + "/android/data/com.my.app/image-" + timestamp + ".png";          imvcature_pic_nir = (imageview) findviewbyid(r.id.nirpic);         imvcature_pic_sharon = (imageview) findviewbyid(r.id.sharonpic);          button uploadpic = (button) findviewbyid(r.id.picuploadbutton);         uploadpic.setonclicklistener(new view.onclicklistener() {             @override             public void onclick(view v) {    /*************************** camera intent start ************************/                 file imagefile = new file(imagefilepath);                 uri imagefileuri = uri.fromfile(imagefile); // convert path uri                 // standard intent action can sent have camera                 // application capture image , return it.                 intent intent = new intent(mediastore.action_image_capture);                 intent.putextra(mediastore.extra_output, imagefileuri);   // set image file name                 startactivityforresult(intent, 1);                 /*************************** camera intent end ************************/             }         });          updatepic();      }      @override     public void onsaveinstancestate(bundle outstate, persistablebundle outpersistentstate) {         outstate.putstring("path", imagefilepath);      }      public void onactivityresult(int requestcode, int resultcode, intent data) {         super.onactivityresult(requestcode, resultcode, data); // if picture taken         if (requestcode == request_code && resultcode == result_ok) {              bitmapfactory.options bmpfactoryoptions = new bitmapfactory.options();             bmpfactoryoptions.injustdecodebounds = true;             bmpfactoryoptions.insamplesize = 5;             bmpfactoryoptions.injustdecodebounds = false;              //imagefilepath image path pass intent             bitmap bp = bitmapfactory.decodefile(imagefilepath, bmpfactoryoptions);              //rotate image 90 degrees             matrix rotatematrix = new matrix();             rotatematrix.postrotate(90);             bitmap rotatedbitmap = bitmap.createbitmap(bp, 0, 0, bp.getwidth(), bp.getheight(), rotatematrix, false); //             drawable d = new bitmapdrawable(rotatedbitmap);              bytearrayoutputstream stream = new bytearrayoutputstream(); //            // compress image lower quality scale 1 - 100             rotatedbitmap.compress(bitmap.compressformat.jpeg, 100, stream);             byte[] image = stream.tobytearray(); // //            // create parsefile             parsefile file = new parsefile("image.png", image); //            // upload image parse cloud             file.saveinbackground(); // //            // create new class called "imageupload" in parse             parseobject situationpic = new parseobject("situationpic"); // //            // create column named "imagename" , set string             situationpic.put("imagename", "first pic"); //             situationpic.put("user", user);  //            // create column named "imagefile" , insert image             situationpic.put("imagefile", file); // //            // create class , columns             situationpic.saveinbackground();              if (user.equals("nir")) {                 imvcature_pic_nir.setimagebitmap(getroundedcornerbitmap(rotatedbitmap, 500));                 imvcature_pic_nir.setscaletype(imageview.scaletype.fit_xy);              } else if (user.equals("sharon")) {                 imvcature_pic_sharon.setimagebitmap(getroundedcornerbitmap(rotatedbitmap, 500));                 imvcature_pic_sharon.setscaletype(imageview.scaletype.fit_xy);              } else {                 toast.maketext(situationstatusactivity.this, "error", toast.length_long).show();             }  //       if picture not taken         } else {             toast.maketext(getapplicationcontext(), "not taken", toast.length_long).show();         } //        updatepic();     }       public bitmap nirbitmap;     public bitmap sharonbitmap;     //change load in beginiing     public void updatepic()     { //        update photo of nir         parsequery<parseobject> querynir = parsequery.getquery("situationpic");         querynir.orderbydescending("updatedat");         querynir.whereequalto("user", "nir");         querynir.findinbackground(new findcallback<parseobject>() {             @override             public void done(list<parseobject> objects, parseexception e) {                 parseobject object = objects.get(0);                 parsefile applicantresume = (parsefile) object.get("imagefile");                 applicantresume.getdatainbackground(new getdatacallback() {                     public void done(byte[] data, parseexception e) {                         if (e == null) {                             bitmap bmp = bitmapfactory.decodebytearray(data, 0,                                     data.length);                             matrix rotatematrix = new matrix();                             rotatematrix.postrotate(360);                             bitmap rotatedbitmap = bitmap.createbitmap(bmp, 0, 0, bmp.getwidth(), bmp.getheight(), rotatematrix, false);                             nirbitmap = rotatedbitmap;                             imvcature_pic_nir.setimagebitmap(getroundedcornerbitmap(rotatedbitmap, 500));                             imvcature_pic_nir.setscaletype(imageview.scaletype.fit_xy);                         }                     }                 });             }         });          //        update photo of sharon         parsequery<parseobject> queryshn = parsequery.getquery("situationpic");         queryshn.orderbydescending("updatedat");         queryshn.whereequalto("user", "sharon");         queryshn.findinbackground(new findcallback<parseobject>() {             @override             public void done(list<parseobject> objects, parseexception e) {                 parseobject object = objects.get(0);                  parsefile applicantresume = (parsefile) object.get("imagefile");                 applicantresume.getdatainbackground(new getdatacallback() {                     public void done(byte[] data, parseexception e) {                         if (e == null) {                             bitmap bmp = bitmapfactory.decodebytearray(data, 0,                                     data.length);                             matrix rotatematrix = new matrix();                             rotatematrix.postrotate(180);                             bitmap rotatedbitmap = bitmap.createbitmap(bmp, 0, 0, bmp.getwidth(), bmp.getheight(), rotatematrix, false);                              sharonbitmap = rotatedbitmap;                               imvcature_pic_sharon.setimagebitmap(getroundedcornerbitmap(rotatedbitmap, 500));                             imvcature_pic_sharon.setscaletype(imageview.scaletype.fit_xy);                         }                     }                 });             }         });      }      public static bitmap getroundedcornerbitmap(bitmap bitmap, int pixels) {         bitmap output = bitmap.createbitmap(bitmap.getwidth(), bitmap                 .getheight(), bitmap.config.argb_8888);         canvas canvas = new canvas(output);          final int color = 0xff424242;         final paint paint = new paint();         final rect rect = new rect(0, 0, bitmap.getwidth(), bitmap.getheight());         final rectf rectf = new rectf(rect);         final float roundpx = pixels;          paint.setantialias(true);         canvas.drawargb(0, 0, 0, 0);         paint.setcolor(color);         canvas.drawroundrect(rectf, roundpx, roundpx, paint);          paint.setxfermode(new porterduffxfermode(porterduff.mode.src_in));         canvas.drawbitmap(bitmap, rect, rect, paint);          return output;     }   } 

the logcat

fatal exception: main                                                                                process: fastner.israel.nir_zabari.onelove, pid: 31324                                                                                java.lang.runtimeexception: unable resume activity {fastner.israel.nir_zabari.onelove/fastner.israel.nir_zabari.onelove.situationstatusactivity}: java.lang.runtimeexception: failure delivering result resultinfo{who=null, request=1, result=-1, data=null} activity {fastner.israel.nir_zabari.onelove/fastner.israel.nir_zabari.onelove.situationstatusactivity}: java.lang.nullpointerexception: attempt invoke virtual method 'int android.graphics.bitmap.getwidth()' on null object reference                                                                                    @ android.app.activitythread.performresumeactivity(activitythread.java:3394)                                                                                    @ android.app.activitythread.handleresumeactivity(activitythread.java:3425)                                                                                    @ android.app.activitythread.handlelaunchactivity(activitythread.java:2763)                                                                                    @ android.app.activitythread.handlerelaunchactivity(activitythread.java:4462)                                                                                    @ android.app.activitythread.access$1000(activitythread.java:177)                                                                                    @ android.app.activitythread$h.handlemessage(activitythread.java:1454)                                                                                    @ android.os.handler.dispatchmessage(handler.java:102)                                                                                    @ android.os.looper.loop(looper.java:145)                                                                                    @ android.app.activitythread.main(activitythread.java:5942)                                                                                    @ java.lang.reflect.method.invoke(native method)                                                                                    @ java.lang.reflect.method.invoke(method.java:372)                                                                                    @ com.android.internal.os.zygoteinit$methodandargscaller.run(zygoteinit.java:1400)                                                                                    @ com.android.internal.os.zygoteinit.main(zygoteinit.java:1195)                                                                                 caused by: java.lang.runtimeexception: failure delivering result resultinfo{who=null, request=1, result=-1, data=null} activity {fastner.israel.nir_zabari.onelove/fastner.israel.nir_zabari.onelove.situationstatusactivity}: java.lang.nullpointerexception: attempt invoke virtual method 'int android.graphics.bitmap.getwidth()' on null object reference                                                                                    @ android.app.activitythread.deliverresults(activitythread.java:4058)                                                                                    @ android.app.activitythread.performresumeactivity(activitythread.java:3380)                                                                                    @ android.app.activitythread.handleresumeactivity(activitythread.java:3425)                                                                                     @ android.app.activitythread.handlelaunchactivity(activitythread.java:2763)                                                                                     @ android.app.activitythread.handlerelaunchactivity(activitythread.java:4462)                                                                                     @ android.app.activitythread.access$1000(activitythread.java:177)                                                                                     @ android.app.activitythread$h.handlemessage(activitythread.java:1454)                                                                                     @ android.os.handler.dispatchmessage(handler.java:102)                                                                                     @ android.os.looper.loop(looper.java:145)                                                                                     @ android.app.activitythread.main(activitythread.java:5942)                                                                                     @ java.lang.reflect.method.invoke(native method)                                                                                     @ java.lang.reflect.method.invoke(method.java:372)                                                                                     @ com.android.internal.os.zygoteinit$methodandargscaller.run(zygoteinit.java:1400)                                                                                     @ com.android.internal.os.zygoteinit.main(zygoteinit.java:1195)                                                                                  caused by: java.lang.nullpointerexception: attempt invoke virtual method 'int android.graphics.bitmap.getwidth()' on null object reference                                                                                    @ fastner.israel.nir_zabari.onelove.situationstatusactivity.onactivityresult(situationstatusactivity.java:117)                                                                                    @ android.app.activity.dispatchactivityresult(activity.java:6549)                                                                                    @ android.app.activitythread.deliverresults(activitythread.java:4054)                                                                                    @ android.app.activitythread.performresumeactivity(activitythread.java:3380)                                                                                     @ android.app.activitythread.handleresumeactivity(activitythread.java:3425)                                                                                     @ android.app.activitythread.handlelaunchactivity(activitythread.java:2763)                                                                                     @ android.app.activitythread.handlerelaunchactivity(activitythread.java:4462)                                                                                     @ android.app.activitythread.access$1000(activitythread.java:177)                                                                                     @ android.app.activitythread$h.handlemessage(activitythread.java:1454)                                                                                     @ android.os.handler.dispatchmessage(handler.java:102)                                                                                     @ android.os.looper.loop(looper.java:145)                                                                                     @ android.app.activitythread.main(activitythread.java:5942)                                                                                     @ java.lang.reflect.method.invoke(native method)                                                                                     @ java.lang.reflect.method.invoke(method.java:372)                                                                                     @ com.android.internal.os.zygoteinit$methodandargscaller.run(zygoteinit.java:1400)                                                                                     @ com.android.internal.os.zygoteinit.main(zygoteinit.java:1195)  

before doing work decoded bitmap need check decoded well.

// code above if (requestcode == request_code && resultcode == result_ok) {     bitmapfactory.options bmpfactoryoptions = new mapfactory.options();     bmpfactoryoptions.injustdecodebounds = true;     bmpfactoryoptions.insamplesize = 5;     bmpfactoryoptions.injustdecodebounds = false;      //imagefilepath image path pass intent     bitmap bp = bitmapfactory.decodefile(imagefilepath, bmpfactoryoptions);     if (bp != null) {         //rotate image 90 degrees         matrix rotatematrix = new matrix();         rotatematrix.postrotate(90);         bitmap rotatedbitmap = bitmap.createbitmap(bp, 0, 0, bp.getwidth(), bp.getheight(), rotatematrix, false);     } // code below 

Comments

Popular posts from this blog

get url and add instance to a model with prefilled foreign key :django admin -

android - Keyboard hides my half of edit-text and button below it even in scroll view -

css - Make div keyboard-scrollable in jQuery Mobile? -