SDK version23, добавлено правильное разрешение (Внешнее хранилище), но приложение вылетает, когда я сохраняю растровое изображение в Mediastore. Все фильтры работают нормально, но по некоторым причинам функция сохранения приводит к сбою приложения.
publi c Класс MainActivity расширяет AppCompatActivity, реализует ActivityCompat.OnRequestPermissionsResultCallback {private ImageView imageView; частное растровое изображение оригинал;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
imageView = findViewById(R.id.image_view);
requestPermissions(new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, 1);
}
public void apply(Transformation<Bitmap> filter) {
if (original != null) {
Glide
.with(this)
.load(original)
.apply(RequestOptions.bitmapTransform(filter))
.into(imageView);
}
}
public void applySepia(View view) {
apply(new SepiaFilterTransformation());
}
public void applyToon(View view) {
apply(new ToonFilterTransformation());
}
public void applySketch(View view) {
apply(new SketchFilterTransformation());
}
public void applySwirl(View view) {
apply(new SwirlFilterTransformation());
}
public void applySave()
{
String Saving = MediaStore.Images.Media.insertImage(getContentResolver(), original, "testcs50", "testcs50");
Toast.makeText(MainActivity.this,
Saving,
Toast.LENGTH_LONG).show();
}
public void choosePhoto(View view) {
Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT);
intent.setType("image/*");
startActivityForResult(intent, 1);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode == Activity.RESULT_OK && data != null) {
try {
Uri uri = data.getData();
ParcelFileDescriptor parcelFileDescriptor =
getContentResolver().openFileDescriptor(uri, "r");
FileDescriptor fileDescriptor = parcelFileDescriptor.getFileDescriptor();
original = BitmapFactory.decodeFileDescriptor(fileDescriptor);
parcelFileDescriptor.close();
imageView.setImageBitmap(original);
} catch (IOException e) {
e.printStackTrace();
Log.e("This is error","Error at that stage");
}
}
}
@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
}
}
Журнал из приложения 2020-04-26 22: 26: 12.658 385-385 /? E / netmgr: не удалось открыть канал QEMU 'qemud: network': неверный аргумент 2020-04-26 22: 26: 13.652 387-387 /? E / wifi_forwarder: RemoteConnection не удалось инициализировать: RemoteConnection не удалось открыть канал 2020-04-26 22: 26: 13.656 251-256 /? E / android .system. suspend@1.0-service: Ошибка открытия статистики wakelock ядра для: wakeup36: В доступе отказано 2020-04-26 22: 26: 13.658 251-256 /? E / android .system. suspend@1.0-service: Ошибка открытия статистики wakelock ядра для: wakeup35: В доступе отказано 2