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