Как создать отдельную личную папку для захваченных изображений? - PullRequest
0 голосов
/ 03 мая 2018

Я пытаюсь создать отдельную папку для захваченных изображений, используя код, и приведенный ниже код работает нормально для создания отдельной папки, а изображения также сохраняются в этой папке

Моя проблема заключается в том, что захваченные изображения также появляются в галерее , и я не хочу показывать их в моей галерее . Может ли кто-нибудь помочь мне, пожалуйста, что я буду делать для моего требования

код:

            ContentValues values = new ContentValues();
            values.put(MediaStore.Images.Media.TITLE, "New Picture");
            values.put(MediaStore.Images.Media.DESCRIPTION, "From your Camera");
            imageUri = getContentResolver().insert(
                    MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values);
            Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
            intent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri);
            startActivityForResult(intent, Constants.CAMERA_REQUEST_CODE);



  private void onCaptureImageResult(Intent data) {

 Bitmap bitmap = MediaStore.Images.Media.getBitmap(this.getContentResolver(), imageUri);
 File compressedFile1 = Utilities.saveImage(this, bitmap);

}



public static File saveImage(Context context, Bitmap imgBitmap) {

        File mediaFile = null;
        try {
            //Bitmap imgBitmap = (Bitmap) data.getExtras().get("data");
            File sd = Environment.getExternalStorageDirectory();
            File imageFolder = new File(sd.getAbsolutePath() + File.separator +
                    ".FOSImages");
            if (!imageFolder.isDirectory()) {
                imageFolder.mkdirs();
            }
            mediaFile = new File(imageFolder + File.separator + "fos_" +
                    System.currentTimeMillis() + ".jpg");
            FileOutputStream fileOutputStream = new FileOutputStream(mediaFile);
            imgBitmap.compress(Bitmap.CompressFormat.JPEG, 90, fileOutputStream);
            fileOutputStream.close();
            return mediaFile;
        } catch (Throwable throwable) {
            throwable.printStackTrace();
        }
        return mediaFile;
    }

1 Ответ

0 голосов
/ 03 мая 2018

Появляется в Галерее, потому что вы используете getExternalStorageDirectory(), это возвращает публичный путь, доступный для всех приложений. Поэтому одним из решений является использование частного внешнего пути context.getExternalFilesDir(Environment.DIRECTORY_PICTURES), folderName), сохраненные здесь файлы не будут доступны для MediaScanner и, следовательно, не будут видны в Галерее, хотя они будут удалены при удалении вашего приложения.

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