Обрезка изображения 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();
}
}
Как решить эту проблему?