2014-12-04 12 views
6

Pracuję nad aplikacją dla systemu Android dla pracodawcy dbającego o bezpieczeństwo. Jest zaniepokojony migawką ekranu, która pojawia się na Overview Screen (a.k.a, lista ostatnich zadań), która wycieka poufne informacje i chce, żebym wstawił ekran powitalny programu, zanim system zrobi to zdjęcie. Niestety nie znalazłem żadnego sposobu, aby to zrobić.Konieczność ukrycia zawartości programu w Androidzie "Ekran przeglądu"

Czego próbowałem:

  • napompować przeglądać ekran powitalny w funkcji . (Brak efektu, nawet z bringToFront i setVisibility(View.VISIBLE).)
  • Napełnij widok ekranu powitalnego Wyświetl w onCreate i użyj bringToFront w . (Ponownie, brak efektu.)
  • Wywołanie setVisible(false) w . (Wydaje się prawie działać, ponieważ ekran miga na chwilę w kolorze czarnym po przejściu z programu, ale widocznie jest ponownie widoczny przez system przed migawką.)
  • Wywołanie setVisibility(View.INVISIBLE) na najwyższym elemencie widoku . (Wydaje się, że to zadziała, ale migawka jest widoczna, zanim zadziała.)

Jestem umiarkowanie zaawansowanym programistą Androida, ale nie mogę oprzeć się wrażeniu, że istnieje proste rozwiązanie, które m brakuje.

+3

Spróbuj ['onCreateThumbnail()'] (http://developer.android.com/reference/android/app/Activity.html#onCreateThumbnail%28android.graphics.Bitmap,%20android.graphics.Canvas%29), ponieważ myślę, że to jest to, co jest tutaj użyte. Lub [użyj 'FLAG_SECURE'] (http://commonsware.com/blog/2012/01/16/secure-against-screenshots.html), aby po prostu zablokować wszystko (w przeciwieństwie do ekranu powitalnego). – CommonsWare

+0

@CommonsWare, idealnie! Jeśli zamienisz to w odpowiedź, z przyjemnością to zaakceptuję. –

Odpowiedz

8

Osobiście bym go with FLAG_SECURE i po prostu zablokować wyświetlanie tych rzeczy wszędzie:

public class FlagSecureTestActivity extends Activity { 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

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

    setContentView(R.layout.main); 
    } 
} 

Jednak IIRC można przesłonić onCreateThumbnail() dostarczyć swój własny obraz do wykorzystania na listy recent-zadań. Zauważ, że mogło się to zmienić w systemie Android 5.0, ponieważ dokonano przeglądu listy ostatnich zadań, więc przetestuj swój kod na urządzeniu 5.0 lub emulatorze.

+1

Niestety, 'onCreateThumbnail' wydaje się nie działać. Nigdy nie jest tu wywoływana (Android 4.4 i 5.0) i znalazłem to: . 'FLAG_SECURE' ma również własne problemy, jak częściowo opisano tutaj: . Cóż, zachowaj spokój i kontynuuj. ;-) –

1

Zamiast uruchamiać działanie, można rozważyć uruchomienie zadania aplikacji przy użyciu ActivityManager.addAppTask(Activity, Intent, ActivityManager.TaskDescription, Bitmap), z którego bitmapa, którą przekazałeś, jest używana jako miniatura na ekranie przeglądu/ostatnio.

Dokument na tym api to here, jednak jest dostępny tylko w Lollipop.

Powiązane problemy