2011-11-30 12 views
6

Utworzyłem program wyświetlający toast za każdym razem, gdy otrzymam połączenie przychodzące. Działa dobrze na wszystkich telefonach, które wypróbowałem - wyświetla toast na ekranie połączenia przychodzącego.Toast nie jest wyświetlany na ekranie blokującym HTC Sense 3.0

Wczoraj zaktualizowałem swój HTC Desire S do Sense 3.0 (Android 2.3.5) i podobno ma on nowy ekran blokady, który wyświetla przychodzące połączenia. Otwarcie ekranu blokady spowoduje wyświetlenie "oryginalnego" ekranu połączenia przychodzącego i odebranie połączenia. Mogę też zobaczyć tosty na ekranie pierwotnej rozmowy przez sekundę, zanim połączenie zostanie odebrane.

Wyświetlany toast za pomocą niestandardowego układu i jest wyświetlany z usługi. Usługa otrzymuje zamiar od nadawcy w trakcie połączenia przychodzącego.

używam poniższy kod, żeby pokazać moje tosty:

LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
View layout = inflater.inflate(R.layout.popup_toast, null); 

toast = new Toast(getApplicationContext()); 
toast.setGravity(Gravity.TOP | Gravity.FILL_HORIZONTAL, 0, 0); 
toast.setDuration(Toast.LENGTH_SHORT); 
toast.setView(layout); 
toast.show(); 

Czy istnieje jakiś sposób, aby ustawić tak, że tosty jest pokazane na nowym ekranie blokady Sense 3.0?

+0

Jak wygląda plik układu popup_toast? jak minąłeś KeyGuard?!? – bofredo

Odpowiedz

0

skorzystać z poniższego kodu

LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     View layout = inflater.inflate(R.layout.listitems, null); 
     Toast toastView = new Toast(getApplicationContext()); 
     toastView.setView(layout); 
     toastView.setDuration(Toast.LENGTH_LONG); 
     toastView.setGravity(Gravity.CENTER, 0,0); 
     toastView.show(); 

     it's working fine for me 
+0

Twój kod jest dokładnie taki sam jak mój, z wyjątkiem kolejności setView, setDuration i setGravity. Więc ten kod pracował dla Ciebie w HTC z Sense 3.0? – Franz

+0

mnie przy użyciu Htc Desire, wersja 2.2 działa dobrze dla mnie – sravan

+0

Problem dotyczy tylko HTC Sense 3.0 (Android 2.3.5). To działało dobrze na wcześniejszych wersjach. – Franz

2

Myślę, że problem jest trochę szerszy. W moim przypadku ekran blokady HTC sense 3.0 nie pozwala na wyświetlanie okna dialogowego aktywności (tak jak w przypadku wiadomości Toast). Gdy okno dialogowe odblokowane (aktywność uruchomiona z usługi w tle) jest wyświetlane poprawnie. Jedynym sposobem na wyświetlenie wiadomości na ekranie HTC Sensitivity Lock jest korzystanie z powiadomień - i wielu zgodzi się, że jest to zalecana metoda (np. Nie przeszkadzaj użytkownikom w wyskakujących okienkach). Zwrot ma charakter powiadomienia - zniknie po drugim lub dwóch. Tak więc w przypadku aplikacji typu "ID dzwoniącego" użytkownik powinien szybko wyciągnąć HTC z kieszeni, jeśli chce zobaczyć, kto dzwoni, a to nie jest właściwe na pewno.

Może pakiet SDK OpenSense zawiera interfejs API umożliwiający wyświetlanie komunikatu na ekranie przez dłuższy czas. Na pierwszy rzut oka znalazłem tylko zakładki "z wyczuciem" ...

Ktoś zasugerował odblokowanie telefonu "programowo", a następnie wyświetlenie tosty lub okna dialogowego. To nie jest "szczęśliwe" rozwiązanie - i nie jest nawet pewne, czy jest to możliwe.

Wiem, że mój wpis nie jest pełną odpowiedzią, ale mam nadzieję, że zawiera więcej informacji o problemie wyświetlania wiadomości na ekranie blokady HTC sense 3.0.

Powiązane problemy