Как предотвратить захват экрана в Android

Возможно ли предотвратить запись экрана в приложении Android?

Я хотел бы разработать Android Secure Application. В этом я должен обнаружить программное обеспечение для записи экрана, которое работает на фоне и убивает их. Я использовал SECURE FLAG для предотвращения скриншотов. Но я не знаю, возможно ли предотвратить захват видео с экрана Android. Дайте мне знать, как предотвратить захват экрана (видео / скриншоты).

    Я собираюсь сказать, что невозможно полностью предотвратить захват экрана / видео любого приложения Android с помощью поддерживаемых средств. Но если вы хотите заблокировать его для обычных Android-устройств, SECURE FLAG является существенным.

    1) Защищенный флаг блокирует как обычный снимок экрана, так и видеозапись.

    Также документация по этой ссылке говорит, что

    Флаг windows: обрабатывать содержимое windows как безопасное, предотвращать его появление на снимках экрана или просмотр на незащищенных дисплеях.

    Выше решение наверняка не позволит приложениям захватывать видео вашего приложения

    См. Ответ здесь .

    2) Существуют альтернативные способы захвата содержимого экрана.

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

    которые обе дают вам мало шансов, что вы либо заблокируете его, либо получите уведомление об этом.

    Например: существует программное обеспечение для зеркального отображения экрана телефона на ваш компьютер с помощью SDK, и поэтому программное обеспечение для захвата экрана может быть использовано там, которое невозможно обнаружить в вашем приложении.

    См. Ответ здесь .

    Просто добавьте эту строку:

    getWindow().setFlags(LayoutParams.FLAG_SECURE, LayoutParams.FLAG_SECURE); 

    Перед вашим setContentView() .

    Кажется, что вы знаете, как отключить скриншоты из вашего приложения, и есть другие ответы, которые помогут вам в этом. Но я постараюсь дать вам важную информацию, которую никто не дает вам.

    1) У вас не может быть приложения, которое на 100% безопаснее снимать скриншоты (фото / видео). Официального способа делать скриншоты в Android нет. Если приложение записывает экраны, то оно должно использовать некоторые не поддерживаемые методы (либо укоренение, либо использование SDK).

    Существует очень мало возможностей для блокировки приложения, если он использует root-доступ к экранам записи.

    2) Никто не упоминал об этой проблеме, но будьте очень осторожны при использовании WindowManager.LayoutParams.FLAG_SECURE . Он был проверен на многих устройствах (например, на Samsung Galaxy ACE, например GT-S5830), что делает весь вид скремблированным. Как это,

    введите описание изображения здесь

    Пожалуйста, поставьте чек, как это,

     if(android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.HONEYCOMB) { getWindow().setFlags(WindowManager.LayoutParams.FLAG_SECURE, WindowManager.LayoutParams.FLAG_SECURE); } 

    Он отлично работает на устройствах ICS, поэтому проблем нет.

    3) Я также узнал, что даже на более новых устройствах, таких как Android 4.3, это вызывает проблемы с анимацией при повороте экрана. Проверьте этот отчет об ошибке.

    Попробуй это:

     getWindow().setFlags(LayoutParams.FLAG_SECURE, LayoutParams.FLAG_SECURE); 

    Вы можете сделать свое приложение владельцем устройства / профиля и вызвать setScreenCaptureDisabled() . Из документов это api делает следующее:

    public void setScreenCaptureDisabled (администратор ComponentName, boolean disabled) Добавлен в API уровня 21

    Вызывается владельцем устройства / профиля, чтобы установить, отключен ли захват экрана. Отключение захвата экрана также предотвращает показ содержимого на устройствах, которые не имеют защищенного видеовыхода. Подробнее о защищенных поверхностях и защищенных дисплеях см. FLAG_SECURE.

    Администратор вызывающего устройства должен быть владельцем устройства или профиля. Если это не так, будет выведено исключение безопасности. Параметры admin Какой DeviceAdminReceiver связан с этим запросом. отключено Независимо от того, отключен ли захват экрана или нет.

    В качестве альтернативы вы можете стать партнерским приложением MDM (Mobile Device Management). AME предоставляет дополнительные API-интерфейсы своим партнерским приложениям MDM для управления устройством. Например, samsung предоставляет api для управления записью экрана на устройстве своим партнерам по MDM.

    В настоящее время это единственный способ принудительного применения ограничений захвата экрана.

    Чтобы отключить Screen Capture:

    Добавьте следующую строку кода в onCreate() :

     getWindow().setFlags(WindowManager.LayoutParams.FLAG_SECURE, WindowManager.LayoutParams.FLAG_SECURE); 

    Чтобы включить Screen Capture:

    Найдите для LayoutParams.FLAG_SECURE и удалите строку кода.

    В соответствии с этим официальным руководством вы можете добавить WindowManager.LayoutParams.FLAG_SECURE в свой макет windows, и он будет запрещать скриншоты.

    о скриншоте фото, FLAG_SECURE не работает укорененное устройство.

    но если вы отслеживаете файл скриншота, вы можете предотвратить получение исходного файла.

    попробуйте это.

    1. мониторинг снимков экрана (файловый монитор) с помощью удаленной службы Android
    2. Удалите исходный снимок экрана.
    3. доставьте экземпляр растрового изображения, чтобы вы могли его изменить.

    Давайте будем гением компьютера.