引起:android.content.ActivityNotFoundException:找不到处理Intent的Activity {act = android.media.action.IMAGE_CAPTURE

时间:2018-04-05 05:41:08

标签: android

/ *捕获图像方法* /

 private void captureImage() {
        Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);//Start intent with Action_Image_Capture

            file = CameraUtils.getfile(Home.this);
            fileUri = CameraUtils.getOutputMediaFileUri(Home.this);//get fileUri from CameraUtils
            intent.putExtra(MediaStore.EXTRA_OUTPUT, fileUri);//Send fileUri with intent
            startActivityForResult(intent, CAMERA_REQUEST_CODE);//start activity for result with CAMERA_REQUEST_CODE

    }


   @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        switch (requestCode) {
            case CAMERA_REQUEST_CODE:
                try {
                    //When image is captured successfully
                    if (resultCode == RESULT_OK) {
                        Log.d("Main", file.getAbsolutePath());
                    } else
                        Toast.makeText(this, R.string.cancel_message, Toast.LENGTH_SHORT).show();
                } catch (Exception e) {
                    e.printStackTrace();
                }

                break;

        }
    }

错误

  Caused by: android.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.media.action.IMAGE_CAPTURE flg=0x3 clip={text/uri-list U:file:///storage/emulated/0/Android/data/com.camera_demo/files/Pictures/Camera/IMG_20180402_151052.jpg} (has extras) }

1 个答案:

答案 0 :(得分:0)

检查您是否获得了正确的文件URI。你应该获得如下的URI:

if(Build.VERSION.SDK_INT > Build.VERSION_CODES.M){
    picUri = FileProvider.getUriForFile(activity, BuildConfig.APPLICATION_ID + ".provider", createImageFile());
}else{
    picUri = Uri.fromFile(createImageFile());
}

createImageFile()就像:

public File createImageFile() {
        // Create an image file name
        Date date = new Date();
        String timeStamp = Const.dateFormat.format(date);
        timeStamp = timeStamp + "_" + Const.imgTimeFormat.format(date);
        String imageFileName = "IMG_" + timeStamp + ".jpg";
        File albumF = getAlbumDir();
        File imageF = new File(albumF, imageFileName);
        return imageF;
    }