简体   繁体   中英

Android Studio App Crash, Related To OnClick and startActivityForResult

I am learning how to make a simple camera app on Android Studio at the moment. When I click the 'camera' button, the app crashes. I can't seem to pinpoint what is causing the app to crash. In logcat, it states that 'startActivityForResult' might be the cause...but it looks normal to me.

I made sure that the camera button id matches the java file. Any help is greatly appreciated!

Here is my code so far.

Main_Activity.java:

public class MainActivity extends AppCompatActivity {

Button cam_button;
ImageView imageView;
static final int CAMERA_REQUEST_CODE = 1;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);


    cam_button = (Button) findViewById(R.id.cam_button);
    imageView = (ImageView) findViewById(R.id.imageV);

    cam_button.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Intent cameraIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
            File file = getFile();
            cameraIntent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(file));
            startActivityForResult(cameraIntent, CAMERA_REQUEST_CODE);
        }
    });

}


private File getFile() {
    File folder = new File("sdcard/camera_app");
    if(folder.exists())
        folder.mkdir();

    File imageFile = new File("cameraImage.jpg");

    return imageFile;
}


@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {

    String path = "sdcard/camera_app/cameraImage.jpg";
    imageView.setImageDrawable(Drawable.createFromPath(path));
}}

activity_main.xml:

<Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="camera"
    android:id="@+id/cam_button"
    android:layout_alignParentBottom="true"
    android:layout_centerHorizontal="true" />

<ImageView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/imageV"
    android:layout_alignParentTop="true"
    android:layout_alignParentLeft="true"
    android:layout_alignParentStart="true" />

This is what I copied from the logcat:

06-24 21:30:45.769 21481-21481/com.sugarcoder.cameraapp E/AndroidRuntime: FATAL EXCEPTION: main Process: com.sugarcoder.cameraapp, PID: 21481 java.lang.SecurityException: Permission Denial: starting Intent { act=android.media.action.IMAGE_CAPTURE flg=0x3 cmp=com.motorola.camera/.Camera clip={text/uri-list U:file:///cameraImage.jpg} (has extras) } from ProcessRecord{b5b85f2 21481:com.sugarcoder.cameraapp/u0a121} (pid=21481, uid=10121) with revoked permission android.permission.CAMERA at android.os.Parcel.readException(Parcel.java:1620) at android.os.Parcel.readException(Parcel.java:1573) at android.app.ActivityManagerProxy.startActivity(ActivityManagerNative.java:2696) at android.app.Instrumentation.execStartActivity(Instrumentation.java:1574) at android.app.Activity.startActivityForResult(Activity.java:3921) at android.support.v4.app.BaseFragmentActivityJB.startActivityForResult(BaseFragmentActivityJB.java:48) at android.support.v4.app.FragmentActivity.startActivityForResult(FragmentAc tivity.java:75) at android.app.Activity.startActivityForResult(Activity.java:3881) at android.support.v4.app.FragmentActivity.startActivityForResult(FragmentActivity.java:871) at com.sugarcoder.cameraapp.MainActivity$1.onClick(MainActivity.java:40) at android.view.View.performClick(View.java:5201) at android.view.View$PerformClick.run(View.java:21163) at android.os.Handler.handleCallback(Handler.java:746) at android.os.Handler.dispatchMessage(Handler.java:95) at android.os.Looper.loop(Looper.java:148) at android.app.ActivityThread.main(ActivityThread.java:5443) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:728) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)

Solved! I found out the issue is that I had to actually go into the app info for the app on the phone, and turn on the permission. Thanks for all your help, folks! :)

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM