Как сообщать сообщения о том, когда мы предотвращаем снятие с экрана [дублируем]

Итак, вот мой процесс:

keytool -list -v -keystore permanent.jks - получил псевдоним.

keytool -export -alias alias_name -file certificate_name -keystore permanent.jks - получил мне сертификат для импорта.

Тогда я мог бы импортировать его с помощью keytool:

keytool -import -alias alias_name -file certificate_name -keystore keystore location

Поскольку @Christian Bongiorno говорит, что псевдоним уже не существует в вашем хранилище ключей.

47
задан CommonGuy 15 July 2015 в 11:48
поделиться

8 ответов

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

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

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

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

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

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

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

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

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

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

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

58
ответ дан Community 15 August 2018 в 21:08
поделиться
  • 1
    или можно просто щелкнуть изображение с помощью карманной камеры. – Ravinder Payal 12 September 2016 в 16:11
  • 2
    @RavinderPayal ОБЯЗАТЕЛЬНОЕ ЧУВСТВИТЕЛЬНОЕ ЧУВСТВО: thedailywtf.com/articles/copy-protected – usr-local-ΕΨΗΕΛΩΝ 18 January 2018 в 15:15
  • 3
    @ usr-local-ΕΨΗΕΛΩΝ благодарит за обмен, Ты сделал мой день! – Ravinder Payal 18 January 2018 в 15:55
  • 4
    @ usr-local-ΕΨΗΕΛΩΝ Но у меня есть решение этого. Если мы используем сложную МЛ и распознавание фотографий с использованием передней камеры, мы можем обнаружить, что какая-либо камера указывает на экран, и если да, просто держите экран выключенным, пока камера не будет направлена ​​к экрану. – Ravinder Payal 18 January 2018 в 15:58

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

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

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

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

enter image description here [/g2]

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

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, это вызывает проблемы с анимацией при повороте экрана. Пожалуйста, проверьте этот отчет об ошибке.

9
ответ дан Aritra Roy 15 August 2018 в 21:08
поделиться

Попробуйте следующее:

getWindow().setFlags(LayoutParams.FLAG_SECURE, LayoutParams.FLAG_SECURE);
8
ответ дан FelixSFD 15 August 2018 в 21:08
поделиться
  • 1
  • 2
    Флаг окна: обрабатывать содержимое окна как безопасное, предотвращать его появление на снимках экрана или просмотр на незащищенных дисплеях. Подробнее о защищенных поверхностях и защищенных дисплеях см. FLAG_SECURE. Константное значение: 8192 (0x00002000) Подробнее developer.android.com/reference/android/view/… – Jithu P.S 21 July 2015 в 07:25
  • 3
    Пожалуйста, не уменьшайте свой пост, откатываясь от наших улучшений – FelixSFD 21 April 2017 в 11:33

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

1
ответ дан r5d 15 August 2018 в 21:08
поделиться

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

public void setScreenCaptureDisabled (имя_компьютера ComponentName, boolean disabled) Добавлено в уровень API 21

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

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

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

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

7
ответ дан rupesh jain 15 August 2018 в 21:08
поделиться

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

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

0
ответ дан Soo Chun Jung 15 August 2018 в 21:08
поделиться

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

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

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

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

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

21
ответ дан V.Y. 15 August 2018 в 21:08
поделиться
  • 1
    Вопрос: [quote] Я использовал SECURE FLAG [unquote] Your & quot; answer & quot; : [quote] Вы можете использовать FLAG_SECURE [unqote]. Вы можете найти здесь проблему? – 2Dee 20 July 2015 в 14:46
  • 2
    Привет, Я разрабатываю веб-приложение портала. Для доступа к этому порталу пользователи могут использовать любые браузеры. Пользователи этого портала не должны делать скриншоты при использовании мобильных устройств. Могу ли я использовать те же меры предосторожности (etWindow (). SetFlags (LayoutParams.FLAG_SECURE, LayoutParams.FLAG_SECURE);) для веб-приложения. Он работает для IOS? Если я могу использовать однотипные меры предосторожности, где я должен позвонить этой строке? – Ferda-Ozdemir-Sonmez 17 April 2017 в 12:31
23
ответ дан V.Y. 5 September 2018 в 20:37
поделиться
Другие вопросы по тегам:

Похожие вопросы: