Приложение, над которым я работаю, отображает некоторую конфиденциальную информацию, которая не должна отображаться на экране "Недавние задачи" при остановке приложения нажатием кнопки "Домой".
Я хотел бы размыть конфиденциальные данные на скриншоте или вместо показать логотип приложения.
Мне известны следующие подходы, но они не соответствуют моим требованиям:
- Если для actvitie
android:excludeFromRecents
задано значение true в манифесте, приложение вообще не будет отображаться в последних задачах. Это нарушит работу пользователя. - Использование
FLAG_SECURE
приводит к появлению пустой карточки на экране заданий. (Как запретить Android делать снимок экрана, когда мое приложение переходит в фоновый режим?) Мне не нравится пустой экран. Тем не менее, я буду придерживаться этого решения, если нет обходного пути. - Переопределение
onCreateThumbnail
кажется идеальным решением, но, к сожалению, не работает, так как в настоящее время не вызывается ОС :( (https://code.google.com/p/android/issues/detail?id=29370)
А потом есть некоторые обходные пути, которые я опробовал, но они не сработали, как хотелось бы:
- Начните новое действие, которое показывает логотип приложения в
onPause
, так что вместо фактического актива отображается скриншот. Но открытие нового действия занимает слишком много времени и нарушает работу пользователя. - Установите вид содержимого активности на изображение логотипа приложения в
onPause
. Это казалось мне отличным решением. К сожалению, скриншот экрана недавних задач сделан в неуказанное время. Во время тестирования логотип приложения быстро появляется перед тем, как приложение закрывается при нажатии кнопки "Домой", но на полученном снимке экрана показывается активность незадолго до этого. - Удаление конфиденциальных данных из виджетов (например,
textView.setText("")
) имеет ту же проблему синхронизации времени экрана, что только что упоминалось.
Какие-нибудь альтернативные идеи или решения перечисленных обходных путей?