У меня есть приложение для Android, и в нем я использую камеру для фотографирования. Я хочу, чтобы эти фотографии оставались на 100% внутренними по отношению к моему собственному приложению по соображениям конфиденциальности. На некоторых устройствах (не на всех) фотографии, сделанные в моем приложении, копируются в камеру на телефоне. Я хочу знать, могу ли я что-нибудь сделать, чтобы они не попали в камеру. Ниже то, что я пытался.
Прежде чем перейти к тому, что я пробовал, я видел этот пост на SO , в котором предлагается пойти в рулон камеры и удалить снимки. Это НЕ идеальная ситуация по нескольким причинам:
- Если произойдет сбой или остановка моего приложения до того, как я получу возможность удалить изображение, оно останется там.
- Даже если я поймаю их вовремя и удалю, они все еще будут существовать в течение короткого времени при прокате камеры, что может привести к доступу к ним других приложений, даже если вероятность невелика.
- Я не хочу вообще удалять объекты с камеры пользователя из-за боязни удалить что-то, чего не должен делать я.
- Это похоже на безумно ужасный и хакерский обходной путь, и это 7 лет назад, так что я надеюсь, что сейчас есть что-то лучшее.
Я сохраняю свои фотографии непосредственно во ВНУТРЕННЕЕ хранилище для моего приложения.
File folder = new File(activity.getFilesDir(), "pictures");
folder.mkdirs();
File file = new File(folder.getAbsolutePath() + File.separator + filename + ".jpeg");
URI uri = FileProvider.getUriForFile(activity, myAppsFileProviderAuthority(), file);
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
intent.putExtra(MediaStore.EXTRA_OUTPUT, uri);
activity.startActivityForResult(intent, INTENT_RESULT_VALUE);
Из того, что я могу сказать, это само по себе должно помешать кому-либо еще касаться моих фотографий, но они все еще отображаются в галерее на некоторых устройствах.
Я также попытался сохранить файл во внешнем каталоге хранения вместо внутреннего хранилища, используя getExternalFilesDir()
вместо activity.getFilesDir()
выше, поскольку в соответствии с документацией Android :
если вы хотите, чтобы фотографии оставались конфиденциальными только для вашего приложения, вместо этого вы можете использовать каталог, предоставленный getExternalFilesDir()
.
Тот же результат, и я все равно не хочу сохранять изображения здесь.
Я также попытался создать временный файл вместо обычного файла для временного хранения моего изображения, но получаю тот же результат:
File file = File.createTempFile(filename, ".jpeg", folder);
Я также натолкнулся на статью, в которой говорилось, что вы можете создать файл с именем .nomedia
в каталоге, где существуют фотографии, что может помешать некоторым сканерам файлов получить доступ к фотографиям изнутри, но это ничего не остановит.
Существуют ли другие варианты, чтобы мои фотографии были на 100% внутренними для моего приложения, не заходя в рулон камеры и не удаляя файлы?