Зефир: java.lang.illegalargumentexception: mediaFileUri должен быть файловым Uri

У меня проблема с зефирным устройством во время обрезки фотографии после захвата ее камерой. Он работает нормально на устройствах ниже 6 версии. вот мой код:

if (requestCode == CAMERA_PICTURE) {

                Intent cropIntent = new Intent("com.android.camera.action.CROP");
                // set data type to be sent , indicate image type and Uri of image
                cropIntent.setDataAndType(mCapturedImageURI, "image/*");
                List<ResolveInfo> list = getPackageManager().queryIntentActivities( cropIntent, 0 );
                int size = list.size();
                // handle the case if there's no cropper in the phone
                if (size == 0) {
                    Toast.makeText(this, "Can not find image crop app", Toast.LENGTH_SHORT).show();
                    return;
                } else {

                   //set crop properties
                    cropIntent.putExtra("crop", "true");
                    //indicate aspect of desired crop
                    cropIntent.putExtra("aspectX", 1);
                    cropIntent.putExtra("aspectY", 1);
                    //indicate output X and Y
                    cropIntent.putExtra("outputX", 256);
                    cropIntent.putExtra("outputY", 256);

                    String fileName = Ut.getDateTimeStamp();
                    ContentValues values = new ContentValues();
                    values.put(MediaStore.Images.Media.TITLE, fileName);

                    mCropImageURI = getContentResolver()
                            .insert(
                                    MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
                                    values);

                    cropIntent.putExtra(MediaStore.EXTRA_OUTPUT,
                            mCropImageURI);

                    //retrieve data on return
                    cropIntent.putExtra("return-data", true);
                    //start the activity - we handle returning in onActivityResult
                    startActivityForResult(cropIntent, CROP_PICTURE);

                    return;
                }
            } else if (requestCode == CROP_PICTURE) {
                 getCameraPhotoFromIntent(data);
                setImagePathToSource();
            }

2 ответа

Попробуй это:

    if (android.os.Build.VERSION.SDK_INT < android.os.Build.VERSION_CODES.MARSHMALLOW) {
         cropIntent.putExtra(MediaStore.EXTRA_OUTPUT, mCropImageURI);
    }

Я исправил сам, удалив

cropIntent.putExtra(MediaStore.EXTRA_OUTPUT,
                            mCropImageURI);

в качестве нексуса 9 вместо фотографий используется приложение "Фото", а приложение "Фото" не допускается. Таким образом, удалив это, я могу обрезать изображение.

Спасибо.