Обрезка изображения Android с помощью сбоя com.android.camera.action.CROP на устройствах HTC и Google Phone

В моем приложении пользователь может выбрать изображение с камеры или галереи в Android. После выбора изображения пользователь также может обрезать изображение из этого исходного изображения. Но после обрезки происходит сбой в HTC Desire 10 pro (Android 6.0) и Goolge Phone (Android 7.1.2). Я заметил, что эти два устройства используют Google Фото в качестве галереи по умолчанию. В устройствах Samsung A5 (Android 6.0.1) и LG G5 (Android 7.0) он работает нормально. Я использую код ниже, чтобы обрезать изображение:

private void getPathImage(Uri picUri) {
    String picturePath = null;
    Uri filePathUri = picUri;
    if (picUri.getScheme().toString().compareTo("content")==0){
        String[] filePathColumn = {MediaStore.Images.Media.DATA };
        Cursor cursor = getApplicationContext().getContentResolver().query(picUri,
                filePathColumn, null, null, null);
        cursor.moveToFirst();
        int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
        picturePath = cursor.getString(columnIndex);
        cursor.close();
    }else if (picUri.getScheme().compareTo("file")==0){
        picturePath = filePathUri.getEncodedPath().toString();
    }
    performCropImage(picturePath);
}

private void performCropImage(String picUri) {
    try {
        //Start Crop Activity
        Intent cropIntent = new Intent("com.android.camera.action.CROP");
        // indicate image type and Uri
        File f = new File(picUri);
        Uri contentUri = Uri.fromFile(f);

        cropIntent.setDataAndType(contentUri, "image/*");
        // 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", 280);
        cropIntent.putExtra("outputY", 280);

        // retrieve data on return
        cropIntent.putExtra("return-data", true);
        // start the activity - we handle returning in onActivityResult
        startActivityForResult(cropIntent, PIC_CROP);
    }
    // respond to users whose devices do not support the crop action
    catch (ActivityNotFoundException anfe) {
        // display an error message
        String errorMessage = "your device doesn't support the crop action!";
        Toast toast = Toast.makeText(getApplicationContext(), errorMessage, Toast.LENGTH_SHORT);
        toast.show();
    }
}

Как решить эту проблему?

0 ответов

Другие вопросы по тегам