Java 皮克;将图像从gallery保存到我的应用程序数据文件夹-ANDROID

Java 皮克;将图像从gallery保存到我的应用程序数据文件夹-ANDROID,java,android,android-camera,android-bitmap,android-gallery,Java,Android,Android Camera,Android Bitmap,Android Gallery,在下面的代码中,我从gallery中选取了一幅图像: Intent choosePicture = new Intent(); choosePicture.setType("image/*"); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { choosePicture.setAction(Intent.ACTION_OPEN_DOCUMENT); } else { choosePicture.setActi

在下面的代码中,我从gallery中选取了一幅图像:

Intent choosePicture = new Intent();
choosePicture.setType("image/*");
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
   choosePicture.setAction(Intent.ACTION_OPEN_DOCUMENT);
}
else {
   choosePicture.setAction(Intent.ACTION_GET_CONTENT);
     }
startActivityForResult(choosePicture, 1);
在活动结果(..)上的

这是有效的。 问题是,如果用户从他的图库中删除照片,应用程序将崩溃。 如何将图像存储到android/data/packagename并获取该路径,以将其存储在数据库中? 谢谢

@Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        Context context = getContext();
        Activity activity = getActivity();
        View view = getView();
        if (context == null || activity == null || view == null) {return;}
        if (resultCode != RESULT_CANCELED) {
            switch (requestCode) {
                case 0:
                    if (resultCode == RESULT_OK) {
                        Bitmap mImageBitmap = null;
                        try {
                            imageUri = Uri.fromFile(new File(currentPhotoPath));
                            mImageBitmap = MediaStore.Images.Media.getBitmap(context.getContentResolver(),
                                    imageUri);
                        } catch (IOException e) {
                            e.printStackTrace();
                        }
                        ImageButton imageButton = view.findViewById(R.id.imgBtn_photo);
                        if (mImageBitmap != null) {
                            imageButton.setImageBitmap(scaleBitmap(mImageBitmap));
                        }
                    }
                    break;
                case 1:
                    if (resultCode == RESULT_OK && data != null) {
                        ImageButton ib = view.findViewById(R.id.imgBtn_photo);
                        imageUri = data.getData();
                        Bitmap bitmapImage;
                        try {
                            bitmapImage = MediaStore.Images.Media.getBitmap(activity.getContentResolver(), imageUri);
                            if (bitmapImage.getHeight() > 1000) {
                                ib.setImageBitmap(scaleBitmap(bitmapImage));
                            } else {
                                ib.setImageBitmap(bitmapImage);
                            }

                        } catch (IOException e) {
                            e.printStackTrace();
                        }
                    }
                    break;
            }
        }
    }