Цель камеры/Действия - не сохранять в галерее

Я использую Активность камеры, чтобы сделать снимок. Я вызываю его с дополнительным параметром MediaStore.EXTRA_OUTPUT. Изображение правильно сохраняется в предоставленном пути, поместив его в папку галереи, так что я могу просмотреть изображение в приложении "Галерея" - могу ли я избежать этого?

...
File file = new File(Environment.getExternalStorageDirectory(), "Test.jpg" );
iImageOutputUri = Uri.fromFile( file );

// Start camera intent to capture image
Intent intent = new Intent( MediaStore.ACTION_IMAGE_CAPTURE );
intent.putExtra( MediaStore.EXTRA_OUTPUT, iImageOutputUri );
startActivityForResult( intent, CAPTURE_IMAGE );
...

Спасибо

Ответы

Ответ 1

Просто замените свой код

File file = new File(Environment.getExternalStorageDirectory(), "Test.jpg" );

со следующим кодом

File file = new File(getExternalFilesDir(Environment.DIRECTORY_PICTURES), "Test.jpg");

Описание getExternalFilesDir(): Возвращает абсолютный путь к каталогу в основной внешней файловой системе (где-то на Environment.getExternalStorageDirectory()), где приложение может размещать постоянные файлы, которыми он владеет. Эти файлы являются внутренними для приложений и обычно не видны пользователю как носитель.

Ответ 2

Как сохранить ваши изображения с расширением без изображения? Что-то вроде michael.photo вместо michael.jpg/png и т.д. Каким образом приложение Gallery не будет принимать их, и я видел, что многие такие приложения сохраняют безопасность, например, делает это.

Ответ 3

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