2012-11-16 6 views
7

Moja aplikacja wyświetla użytkownikowi okno dialogowe przed ekranem blokady. Jest to prosta czynność, która zawiera DialogFragmenty (z biblioteki wsparcia, ponieważ ta aplikacja działa w wersji 2.2+).Unoszące się okna systemu Android w połączeniu z FLAG_SHOW_WHEN_LOCKED nie powiodą się

Ponieważ faktyczna działalność, która wyświetlona te dialogi nie było pływające okno standardy Android,

getWindow().addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED); 

działało.

Jednak myślałem, że zamiast tego użyłbym Działania, które wygląda jak Dialog. Wszystkie tematy Dialog (Holo, etc), choć mają tej pozycji:

<item name="android:windowIsFloating">true</item> 

to z jakiegoś powodu powoduje flagę okna mają być całkowicie ignorowane. Co ciekawe, działanie zostanie wyświetlone po odblokowaniu ekranu przez użytkownika.

Dlaczego tak się dzieje i czy istnieje sposób obejścia tego?

+1

cierpiących z powodu tej samej kwestii ... Czy udało się znaleźć żadnych arounds pracy ? –

+0

Skończyło się na tym, że aktywowałem działanie, które uruchamia okno dialogowe, którego nie można anulować, oraz całkowicie lewą blokadę klawisza wyłączającą moją aplikację. –

+0

o tym samym numerze, chcę, aby czynność "transperant" była widoczna na ekranie blokady, ale wydaje się niemożliwa. –

Odpowiedz

4

Cierpi na ten sam problem. Jedyną rzeczą, która wydaje się działać w tej kwestii jest

KeyguardManager myKeyGuard = (KeyguardManager)getSystemService(Context.KEYGUARD_SERVICE); 
myLock = myKeyGuard.newKeyguardLock("tagName"); 
myLock.disableKeyguard(); 

Nie zapomnij użyć pozwolenie blokady klawiatury w manifeście:

<uses-permission android:name = "android.permission.DISABLE_KEYGUARD"/> 
+3

Jest to wycofany interfejs API, ale działa on w pewnym sensie, więc nadal potrzebuje trochę pracy, aby uzyskać spójne wyniki. Wydaje się, że to najlepsze, co możemy zrobić. –

+1

Bardzo pomocna odpowiedź. Jaka szkoda, że ​​jest to przestarzałe, ponieważ istnieje "lepszy" sposób robienia tego, co chcesz, tylko "lepszy" sposób nie działa w każdym przypadku, że robi to "gorzej". – user1445967

+1

czy ktoś znalazł lepsze rozwiązanie? to rozwiązanie odblokowuje ekran, chcę zablokować ekran i wyświetlić okno dialogowe, takie jak wiadomość WhatsApp. wydaje się, że jest to możliwe, ponieważ whatsapp to ma –