Czy można zapobiec nagrywaniu ekranu w aplikacji na Androida?
Chciałbym opracować bezpieczną aplikację dla systemu Android. W tym celu muszę wykryć oprogramowanie do nagrywania ekranu, które działa w tle i je zabić. Użyłem BEZPIECZNEJ FLAGI do zapobiegania zrzutom ekranu. Ale nie wiem, czy można również zapobiec przechwytywaniu wideo z ekranu Androida. Daj mi znać, jak zapobiec przechwytywaniu ekranu (wideo / zrzuty ekranu).
Odpowiedzi:
Powiem, że nie można całkowicie uniemożliwić przechwytywania ekranu / wideo dowolnej aplikacji na Androida za pomocą obsługiwanych środków. Ale jeśli chcesz go zablokować tylko dla zwykłych urządzeń z Androidem, BEZPIECZNA FLAGA jest znacząca.
1) Flaga bezpieczeństwa blokuje zarówno normalne zrzuty ekranu, jak i przechwytywanie wideo.
Zobacz odpowiedź tutaj .
2) Istnieją alternatywne sposoby przechwytywania zawartości ekranu.
Możliwe jest przechwycenie ekranu innej aplikacji na zrootowanym urządzeniu lub przy użyciu pakietu SDK,
Na przykład: istnieje oprogramowanie do tworzenia kopii lustrzanych ekranu telefonu na komputerze za pośrednictwem zestawu SDK, dzięki czemu można tam użyć oprogramowania do przechwytywania ekranu, którego aplikacja nie może wykryć.
Zobacz odpowiedź tutaj .
źródło
Po prostu dodaj tę linię:
Przed
setContentView()
metodą.źródło
Aby wyłączyć przechwytywanie ekranu:
Dodaj następujący wiersz kodu w
onCreate()
metodzie:Aby włączyć przechwytywanie ekranu:
Znajdź
LayoutParams.FLAG_SECURE
i usuń wiersz kodu.źródło
W przypadku użytkowników Java napisz tę linię nad
setContentView(R.layout.activity_main);
Dla użytkowników kotlin
źródło
window?.set...
ponieważ w Dialogach nie wiesz, czy będziesz mieć okno.Wygląda na to, że wiesz, jak wyłączyć zrzuty ekranu z aplikacji i są inne odpowiedzi, które Ci w tym pomogą. Ale postaram się podać kilka ważnych informacji, których nikt Ci nie przekazuje.
1) Nie możesz mieć aplikacji, która jest w 100% zabezpieczona przed wykonywaniem zrzutów ekranu (zdjęcia / wideo). Nie ma oficjalnego sposobu robienia zrzutów ekranu w systemie Android. Jeśli aplikacja nagrywa ekrany, musi używać niektórych nieobsługiwanych metod (rootowania lub korzystania z SDK).
Możesz zablokować aplikację, jeśli używa ona dostępu roota do nagrywania ekranów.
2) Nikt tutaj nie wspomniał o tym problemie, ale należy być bardzo ostrożnym podczas używania
WindowManager.LayoutParams.FLAG_SECURE
. Na wielu urządzeniach zweryfikowano (jak np. W Samsungu Galaxy ACE, np. GT-S5830), że przez to cały widok jest zakodowany. Lubię to,Proszę wystawić taki czek,
Działa doskonale na urządzeniach ICS, więc nie ma problemu.
3) Dowiedziałem się również, że nawet na nowszych urządzeniach, takich jak Android 4.3, powoduje to problemy z animacją podczas obracania ekranu. Proszę sprawdzić ten raport o błędzie.
źródło
Możesz ustawić swoją aplikację jako właściciela urządzenia / profilu i zadzwonić
setScreenCaptureDisabled()
. W dokumentach ten interfejs API wykonuje następujące czynności:Alternatywnie możesz zostać partnerem aplikacji MDM (Mobile Device Management). OEM zapewnia dodatkowe interfejsy API do swoich partnerskich aplikacji MDM w celu sterowania urządzeniem. Na przykład firma Samsung udostępnia interfejs API do sterowania nagrywaniem ekranu na urządzeniu swoim partnerom MDM.
Obecnie jest to jedyny sposób, w jaki można wymusić ograniczenia dotyczące przechwytywania ekranu.
źródło
Spróbuj tego:
źródło
Widziałem wszystkie odpowiedzi, które są odpowiednie tylko dla jednego działania, ale jest moje rozwiązanie, które zablokuje zrzut ekranu dla wszystkich działań bez dodawania kodu do działania. Przede wszystkim utwórz niestandardową klasę aplikacji i dodaj
registerActivityLifecycleCallbacks
.Następnie zarejestruj ją w swoim manifeście.MyApplicationContext.class
Oczywisty
źródło
Zgodnie z tym oficjalnym przewodnikiem , możesz dodać
WindowManager.LayoutParams.FLAG_SECURE
do układu okna i uniemożliwi to wykonywanie zrzutów ekranu.źródło
Użyłem tego rozwiązania, aby umożliwić ręczne tworzenie migawek w aplikacji, jednocześnie uniemożliwiając przechwytywanie ekranu, gdy aplikacja działa w tle, mam nadzieję, że to pomoże.
źródło
o zrzut ekranu ze zdjęcia, FLAG_SECURE nie działa zrootowanym urządzeniem.
ale jeśli monitorujesz plik zrzutu ekranu, możesz zapobiec uzyskaniu oryginalnego pliku.
Spróbuj tego jeden .
1. zrzut ekranu monitorowania (monitor plików) za pomocą zdalnej usługi Android
2. usuwanie oryginalnego obrazu zrzutu ekranu.
3. dostarczyć instancję mapy bitowej, aby można było ją modyfikować.
źródło