Почему MediaStore.Images.Media.insertImage всегда сохраняет изображения в папке «Изображения»? - PullRequest
1 голос
/ 24 февраля 2020

Я хотел бы сохранить свои изображения в папке, которая соответствует названию моего приложения, вместо папки «Изображения» по умолчанию. Вот мой код в onRequestPermissionsResult:

if(requestCode == SAVE_IMAGE) {
            if(grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
                try {
                    String path = Environment.getExternalStorageDirectory().getAbsolutePath() + "/" + R.string.app_name + "/";
                    File dir = new File(path);
                    if(!dir.exists()){
                        dir.mkdirs();
                    }

                    OutputStream out;
                    String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date());

                    File photoFile = new File(path, timeStamp + ".jpg");
                    photoFile.createNewFile();

                    out = new FileOutputStream(photoFile);

                    Bitmap full_image_result = full_image.copy(full_image.getConfig(), true);
                    selectedFilter.apply(full_image_result);
                    full_image_result.compress(Bitmap.CompressFormat.JPEG, 90, out);

                    MediaStore.Images.Media.insertImage(MainActivity.this.getContentResolver(),photoFile.getAbsolutePath(), photoFile.getName(), photoFile.getName());

                    out.flush();
                    out.close();

                    Toast.makeText(getApplicationContext(),R.string.savedMessage, Toast.LENGTH_LONG).show();

                } catch (IOException e) {
                    e.printStackTrace();
                }
            } else {
                Toast.makeText(getApplicationContext(), R.string.noPermissions, Toast.LENGTH_LONG).show();
            }
        }

1 Ответ

1 голос
/ 24 февраля 2020

Каким-то образом путь был неправильным, заменили его на Environment.getExternalStorageDirectory().getAbsolutePath() + "/Pictura/" и теперь он работает. Я также заменил вызов insertImage на

MediaScannerConnection.scanFile(this, new String[]{photoFile.getAbsolutePath()}, new String[]{"image/jpg"}, null);

, как предложил CommonsWare.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...