android - java.lang.IndexOutOfBoundsException: Invalid index 5, size is 4 -
this question has answer here:
i try run camera cipher of guardian project, when push button got force close. here logcat file:
07-26 06:49:02.639 27157-27157/info.guardianproject.iocipher.camera e/androidruntime: fatal exception: main process: info.guardianproject.iocipher.camera, pid: 27157 java.lang.runtimeexception: unable resume activity {info.guardianproject.iocipher.camera/info.guardianproject.iocipher.camera.stillcameraactivity}: java.lang.indexoutofboundsexception: invalid index 5, size 4 @ android.app.activitythread.performresumeactivity(activitythread.java:2774) @ android.app.activitythread.handleresumeactivity(activitythread.java:2803) @ android.app.activitythread.handlelaunchactivity(activitythread.java:2238) @ android.app.activitythread.access$800(activitythread.java:135) @ android.app.activitythread$h.handlemessage(activitythread.java:1196) @ android.os.handler.dispatchmessage(handler.java:102) @ android.os.looper.loop(looper.java:136) @ android.app.activitythread.main(activitythread.java:5001) @ java.lang.reflect.method.invokenative(native method) @ java.lang.reflect.method.invoke(method.java:515) @ com.android.internal.os.zygoteinit$methodandargscaller.run(zygoteinit.java:785) @ com.android.internal.os.zygoteinit.main(zygoteinit.java:601) @ dalvik.system.nativestart.main(native method) caused by: java.lang.indexoutofboundsexception: invalid index 5, size 4 @ java.util.arraylist.throwindexoutofboundsexception(arraylist.java:255) @ java.util.arraylist.get(arraylist.java:308) @ info.guardianproject.iocipher.camera.camerabaseactivity.trycreatecamera(camerabaseactivity.java:222) @ info.guardianproject.iocipher.camera.camerabaseactivity.initcamera(camerabaseactivity.java:180) @ info.guardianproject.iocipher.camera.camerabaseactivity.onresume(camerabaseactivity.java:174) @ info.guardianproject.iocipher.camera.stillcameraactivity.onresume(stillcameraactivity.java:107) @ android.app.instrumentation.callactivityonresume(instrumentation.java:1192) @ android.app.activity.performresume(activity.java:5310) @ android.app.activitythread.performresumeactivity(activitythread.java:2764) @ android.app.activitythread.handleresumeactivity(activitythread.java:2803) @ android.app.activitythread.handlelaunchactivity(activitythread.java:2238) @ android.app.activitythread.access$800(activitythread.java:135) @ android.app.activitythread$h.handlemessage(activitythread.java:1196) @ android.os.handler.dispatchmessage(handler.java:102) @ android.os.looper.loop(looper.java:136) @ android.app.activitythread.main(activitythread.java:5001) @ java.lang.reflect.method.invokenative(native method) @ java.lang.reflect.method.invoke(method.java:515) @ com.android.internal.os.zygoteinit$methodandargscaller.run(zygoteinit.java:785) @ com.android.internal.os.zygoteinit.main(zygoteinit.java:601) @ dalvik.system.nativestart.main(native method)
and stillcamera.java file:
public class stillcameraactivity extends camerabaseactivity { private string mfilebasepath = null; private boolean isrequest = false; private arraylist<string> mresultlist = null; @override public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); mfilebasepath = getintent().getstringextra("basepath"); isrequest = getintent().getaction() != null && getintent().getaction().equals(mediastore.action_image_capture); mresultlist = new arraylist<string>(); button.setbackgroundresource(r.drawable.ic_action_camera); buttonselfie.setbackgroundresource(r.drawable.ic_action_switch_camera); } @override public void onpicturetaken(final byte[] data, camera camera) { file filesecurepicture; try { if (overlayview != null) overlayview.setbackgroundresource(r.color.flash); long mtime = system.currenttimemillis(); filesecurepicture = new file(mfilebasepath,"secure_image_" + mtime + ".jpg"); bufferedoutputstream out = new bufferedoutputstream(new fileoutputstream(filesecurepicture)); out.write(data); out.flush(); out.close(); mresultlist.add(filesecurepicture.getabsolutepath()); intent intent = new intent("new-media"); // can include data. intent.putextra("media", filesecurepicture.getabsolutepath()); localbroadcastmanager.getinstance(this).sendbroadcast(intent); intent intentresult = new intent().putextra(mediastore.extra_output, mresultlist.toarray(new string[mresultlist.size()])); setresult(activity.result_ok, intentresult); view.postdelayed(new runnable() { @override public void run() { overlayview.setbackgroundcolor(color.transparent); resumepreview(); } },100); } catch (exception e) { e.printstacktrace(); setresult(activity.result_canceled); } } @override public void onpause() { super.onpause(); } @override public void onresume() { super.onresume(); } }
change this
intent intentresult = new intent().putextra(mediastore.extra_output, mresultlist.toarray(new string[mresultlist.size()])); setresult(activity.result_ok, intentresult); to
intent intentresult = new intent().putextra(mediastore.extra_output, mresultlist.toarray(new string[mresultlist.size() - 1])); setresult(activity.result_ok, intentresult);
Comments
Post a Comment