将位图保存到MediaStore后Android应用程序崩溃

问题描述 投票:-2回答:1

SDK version23,添加了正确的权限(外部存储),但是当我在Mediastore上保存位图时,应用程序崩溃。所有过滤器都可以正常工作,但是由于某些原因,保存功能会使应用程序崩溃。

公共类MainActivity扩展了AppCompatActivity,实现了ActivityCompat.OnRequestPermissionsResultCallback {私人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/[email protected]:错误打开以下内核的唤醒锁统计信息:wakeup36:权限被拒绝2020-04-26 22:26:13.658 251-256 /? E/[email protected]:打开内核唤醒锁统计信息时出错:wakeup35:权限被拒绝2

android image mediastore
1个回答
0
投票

抱歉,这是logcat调试,我应该更详细地了解应用程序的行为。我没有收到错误消息,但单击“保存”按钮后,应用突然停止(其他过滤器/按钮工作正常如果您需要其他信息,请告诉我

© www.soinside.com 2019 - 2024. All rights reserved.