Можно ли запретить запись экрана в приложении Android?
Я хочу разработать безопасное приложение для Android. В этом случае мне нужно обнаружить программы для записи экрана, которые работают в фоновом режиме, и убить их. Я использовал SECURE FLAG для предотвращения скриншотов. Но я не знаю, можно ли также предотвратить захват видео с экрана Android. Дайте мне знать, как предотвратить захват экрана (видео / скриншоты).
Ответы:
Я собираюсь сказать, что невозможно полностью предотвратить захват экрана / видео любого приложения для Android с помощью поддерживаемых средств. Но если вы хотите заблокировать его только для обычных устройств Android, БЕЗОПАСНЫЙ ФЛАГ существенен.
1) Флаг безопасности блокирует как обычный снимок экрана, так и захват видео.
Смотрите ответ здесь .
2) Существуют альтернативные способы захвата содержимого экрана.
Можно сделать снимок экрана другого приложения на корневом устройстве или с помощью SDK,
Например: существует программное обеспечение для зеркального отображения экрана вашего телефона на вашем компьютере через SDK, поэтому там можно использовать программное обеспечение для захвата экрана, которое ваше приложение не обнаружит.
Смотрите ответ здесь .
источник
Просто добавьте эту строку:
Перед вашим
setContentView()
методом.источник
Чтобы отключить захват экрана:
Добавьте в
onCreate()
метод следующую строку кода :Чтобы включить снимок экрана:
Найдите
LayoutParams.FLAG_SECURE
и удалите строку кода.источник
Для пользователей Java напишите эту строку над вашим
setContentView(R.layout.activity_main);
Для пользователей котлина
источник
window?.set...
потому, что в диалогах вы не знаете, будет ли у вас Window.Похоже, вы знаете, как отключить скриншоты из своего приложения, и есть другие ответы, которые помогут вам в этом. Но я постараюсь дать вам важную информацию, которую вам никто не дает.
1) Вы не можете иметь приложение, которое на 100% защищено от снимков экрана (фото / видео). Там нет никакого официального способа сделать скриншоты в Android. Если приложение записывает экраны, то оно должно использовать некоторые неподдерживаемые методы (либо рутирование, либо использование SDK).
У вас очень мало возможностей заблокировать приложение, если оно использует root-доступ для записи экранов.
2) Никто здесь не упоминал об этой проблеме, но будьте очень осторожны при использовании
WindowManager.LayoutParams.FLAG_SECURE
. На многих устройствах (например, на Samsung Galaxy ACE, например, GT-S5830) было проверено, что это приводит к искажению всего изображения. Как это,Поставьте, пожалуйста, такой чек,
Он отлично работает на устройствах ICS, так что проблем нет.
3) Я также обнаружил, что даже на новых устройствах, таких как Android 4.3, это вызывает проблемы с анимацией при повороте экрана. Пожалуйста, проверьте этот отчет об ошибке.
источник
Вы можете сделать свое приложение владельцем устройства / профиля и позвонить
setScreenCaptureDisabled()
. Из документации этот API делает следующее:В качестве альтернативы вы можете стать партнерским приложением MDM (Mobile Device Management). OEM-производители предоставляют дополнительные API-интерфейсы для своих партнерских приложений MDM для управления устройством. Например, Samsung предоставляет API-интерфейс для управления записью экрана на устройстве своим партнерам по MDM.
В настоящее время это единственный способ применить ограничения захвата экрана.
источник
Попробуй это:
источник
Я видел все ответы, которые подходят только для одного действия, но есть мое решение, которое блокирует снимок экрана для всех действий без добавления кода к действию. Прежде всего создайте класс Custom Application и добавьте.
registerActivityLifecycleCallbacks
Затем зарегистрируйте его в своем манифесте.MyApplicationContext.class
Манифест
источник
Согласно этому официальному руководству , вы можете добавить
WindowManager.LayoutParams.FLAG_SECURE
в макет окна, и оно не позволит делать снимки экрана.источник
Я использовал это решение, чтобы разрешить создание снимков вручную в приложении и запретить захват экрана, когда приложение работает в фоновом режиме, надеюсь, это поможет.
источник
насчет скриншота фото, FLAG_SECURE не работает рутированное устройство.
но если вы следите за файлом снимка экрана, вы можете предотвратить получение исходного файла.
попробуйте этот один .
1. мониторинг снимка экрана (файловый монитор) с помощью удаленной службы Android
2. удалить исходное изображение снимка экрана.
3. доставьте экземпляр растрового изображения, чтобы его можно было изменить.
источник