Android сбой приложения после сохранения растрового изображения в MediaStore - PullRequest
0 голосов
/ 27 апреля 2020

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

...