所以我有一个应用程序可以捕捉单张图片并显示它们,我已经在api 22,23,24上测试了我的应用程序并且它工作正常,但是在api 25上,当我尝试启动相机时应用程序开始崩溃 . 这是我正在使用的功能:

public void takePhoto(View v) {

        Intent callCameraApplicationIntent = new Intent();
        callCameraApplicationIntent.setAction(MediaStore.ACTION_IMAGE_CAPTURE);

           File photoFile = null;
          try {

            photoFile = createImageFile();

        } catch (IOException e) {
            e.printStackTrace();
        }

        if (photoFile != null) {

            callCameraApplicationIntent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(photoFile));

            startActivityForResult(callCameraApplicationIntent, ACTIVITY_START_CAMERA_APP);
        }

}


File createImageFile() throws IOException{

    // Create an image file name
    String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date());
    String imageFileName = "IMAGE_" + timeStamp + "_";
    File storageDir = getExternalFilesDir(Environment.DIRECTORY_PICTURES);
    File image = File.createTempFile(imageFileName,".jpg",storageDir);

    // Save a file: path for use with ACTION_VIEW intents
    mImageFileLocation = image.getAbsolutePath();
    return image;

}

堆栈跟踪

E / AndroidRuntime:FATAL EXCEPTION:main进程:se.umu.student.snapnconvert,PID:13417 java.lang.IllegalStateException:无法执行android的方法:onClick at android.support.v7.app.AppCompatViewInflater $ DeclaredOnClickListener.onClick( AppCompatViewInflater.java:293)在Android.view.Handler.handleCallback(Handler.java)的android.view.View $ PerformClick.run(View.java:22429)上的android.view.View.performClick(View.java:5637) :751)在Android.os.Handler.dispatchMessage(Handler.java:95)的android.app.Looper.loop(Looper.java:154)在android.app.ActivityThread.main(ActivityThread.java:6119)在java com.android.internal.os.ZygoteInit.main中的com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:886)中的.lang.reflect.Method.invoke(Native Method)(ZygoteInit.java: 776)引起:java.lang.reflect.Method.invoke(Native Method)的java.lang.reflect.InvocationTargetException,位于android.support.v7.app.AppCompatViewInflater $ DeclaredOnClickListener.onClick(AppCompatViewInflate) r.java:288)在android.view.View.performClick(View.java:5637)android.view.View $ PerformClick.run(View.java:22429)android.os.Handler.handleCallback(Handler.java) :751)在Android.os.Handler.dispatchMessage(Handler.java:95)的android.app.Looper.loop(Looper.java:154)在android.app.ActivityThread.main(ActivityThread.java:6119)在java com.android.internal.os.ZygoteInit.main中的com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:886)中的.lang.reflect.Method.invoke(Native Method)(ZygoteInit.java: 776)引起:android.os.FileUriExposedException:file:///storage/emulated/0/Android/data/se.umu.student.snapnconvert/files/Pictures/IMAGE_20170810_084644_1767543939.jpg通过ClipData.Item.getUri在app之外暴露()android.in.SalMode.onFileUriExposed(StrictMode.java:1799)在android.net上的android.content.ClipData.prepareToLeaveProcess(ClipData.java:845)的android.net.Uri.checkFileUriExposed(Uri.java:2346) . content.Intent.prepareToLeaveProcess(Intent.java:8941)at android.content.Intent.prepareToLeaveProcess(Intent.java:8926)位于android.app.Instrumentation.execStartActivity(Instrumentation.java:1517)android.app.Activity.startActivityForResult(Activity.java:4225)android.support.v4在Android的android.app.Activity.startActivityForResult(Activity.java:4183)的android.support.v4.app.FragmentActivity.startActivityForResult(FragmentActivity.java:79)上的.app.BaseFragmentActivityJB.startActivityForResult(BaseFragmentActivityJB.java:50) . support.v4.app.FragmentActivity.startActivityForResult(FragmentActivity.java:859)at se.umu.student.snapnconvert.Main.takePhoto(Main.java:55)at java.lang.reflect.Method.invoke(Native Method)at at android.sview.View上的android.support.v7.app.AppCompatViewInflater $ DeclaredOnClickListener.onClick(AppCompatViewInflater.java:288)在android.view.View.View.View.View.View的android.view.View.performClick(View.java:5637) . (View.java: 22429)在android.os.Handler.handleCallback(Handler.java:751)android.os.Handler.dispatchMessage(Handler.java:95)在android.os.Looper.loop(Looper.java:154)的android.app.ActivityThread.main(ActivityThread.java:6119),位于com.android.internal的java.lang.reflect.Method.invoke(Native Method) .os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:886)at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776)