Android crash when attempting to take picture -
trying create android app. it's going second activity , return on clicking return button. want able take picture in second activity. when click button app crashes.
package com.example.gary.natureall; import android.content.intent; import android.content.pm.packagemanager; import android.graphics.bitmap; import android.media.image; import android.os.bundle; import android.provider.mediastore; import android.support.v7.app.appcompatactivity; import android.view.view; import android.widget.imageview; import android.widget.textview; import java.io.ioexception; public class uploadpicscreen extends appcompatactivity { imageview ivcamera, ivupload, ivgallery, ivimage; static final int request_image_capture = 144; @override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.upload_picture_layout); intent activitythatcalled = getintent(); string previousactivity = activitythatcalled.getextras().getstring("callingactivity"); textview callingactivitymessage = (textview) findviewbyid(r.id.calling_activity_info_text_view); callingactivitymessage.append(" "+ previousactivity); imageview ivcamera = (imageview) findviewbyid(r.id.ivcamera); ivimage = (imageview) findviewbyid(r.id.ivimage); if(! hascamera()) ivcamera.setenabled(false); } //check if device has camera private boolean hascamera(){ return getpackagemanager().hassystemfeature(packagemanager.feature_camera_any); } //launch camera public void launchcamera(view view){ intent intent = new intent(mediastore.action_image_capture); //take picture , pass result onactivityresult startactivityforresult(intent, request_image_capture); } //if want return image captured @override protected void onactivityresult(int requestcode, int resultcode, intent data) { if (requestcode == request_image_capture && resultcode == result_ok){ //get photo bundle extras = data.getextras(); bitmap photo = (bitmap) extras.get("data"); ivimage.setimagebitmap(photo); } } public void onreturnbtnclick(view view) { intent goingback = new intent(); setresult(result_ok, goingback); finish(); } }
here error message.
07-25 20:56:53.451 9055-9055/com.example.gary.natureall e/androidruntime: fatal exception: main process: com.example.gary.natureall, pid: 9055 java.lang.illegalstateexception: not execute method android:onclick @ android.support.v7.app.appcompatviewinflater$declaredonclicklistener.onclick(appcompatviewinflater.java:293) @ android.view.view.performclick(view.java:5698) @ android.widget.textview.performclick(textview.java:10846) @ android.view.view$performclick.run(view.java:22565) @ android.os.handler.handlecallback(handler.java:739) @ android.os.handler.dispatchmessage(handler.java:95) @ android.os.looper.loop(looper.java:158) @ android.app.activitythread.main(activitythread.java:7230) @ java.lang.reflect.method.invoke(native method) @ com.android.internal.os.zygoteinit$methodandargscaller.run(zygoteinit.java:1230) @ com.android.internal.os.zygoteinit.main(zygoteinit.java:1120) caused by: java.lang.reflect.invocationtargetexception @ java.lang.reflect.method.invoke(native method) @ android.support.v7.app.appcompatviewinflater$declaredonclicklistener.onclick(appcompatviewinflater.java:288) @ android.view.view.performclick(view.java:5698) @ android.widget.textview.performclick(textview.java:10846) @ android.view.view$performclick.run(view.java:22565) @ android.os.handler.handlecallback(handler.java:739) @ android.os.handler.dispatchmessage(handler.java:95) @ android.os.looper.loop(looper.java:158) @ android.app.activitythread.main(activitythread.java:7230) @ java.lang.reflect.method.invoke(native method) @ com.android.internal.os.zygoteinit$methodandargscaller.run(zygoteinit.java:1230) @ com.android.internal.os.zygoteinit.main(zygoteinit.java:1120) caused by: java.lang.securityexception: permission denial: starting intent { act=android.media.action.image_capture cmp=com.sec.android.app.camera/.camera } processrecord{3ef341 9055:com.example.gary.natureall/u0a10} (pid=9055, uid=10010) revoked permission android.permission.camera @ android.os.parcel.readexception(parcel.java:1620) @ android.os.parcel.readexception(parcel.java:1573) @ android.app.activitymanagerproxy.startactivity(activitymanagernative.java:3130) @ android.app.instrumentation.execstartactivity(instrumentation.java:1541) @ android.app.activity.startactivityforresult(activity.java:4284) @ android.support.v4.app.basefragmentactivityjb.startactivityforresult(basefragmentactivityjb.java:48) @ android.support.v4.app.fragmentactivity.startactivityforresult(fragmentactivity.java:75) @ android.app.activity.startactivityforresult(activity.java:4231) @ android.support.v4.app.fragmentactivity.startactivityforresult(fragmentactivity.java:871) @ com.example.gary.natureall.uploadpicscreen.launchcamera(uploadpicscreen.java:48) @ java.lang.reflect.method.invoke(native method) @ android.support.v7.app.appcompatviewinflater$declaredonclicklistener.onclick(appcompatviewinflater.java:288) @ android.view.view.performclick(view.java:5698) @ android.widget.textview.performclick(textview.java:10846) @ android.view.view$performclick.run(view.java:22565) @ android.os.handler.handlecallback(handler.java:739) @ android.os.handler.dispatchmessage(handler.java:95) @ android.os.looper.loop(looper.java:158) @ android.app.activitythread.main(activitythread.java:7230) @ java.lang.reflect.method.invoke(native method) @ com.android.internal.os.zygoteinit$methodandargscaller.run(zygoteinit.java:1230) @ com.android.internal.os.zygoteinit.main(zygoteinit.java:1120)
it looks permission problem. relevant part of stack trace is:
java.lang.securityexception: permission denial: starting intent { act=android.media.action.image_capture cmp=com.sec.android.app.camera/.camera } processrecord{3ef341 9055:com.example.gary.natureall/u0a10} (pid=9055, uid=10010) revoked permission android.permission.camera
you'll have add
<uses-permission android:name="android.permission.camera" />
to manifest, , android 6.0, have handle permission @ runtime - see app crashes due java.lang.securityexception example
Comments
Post a Comment