2011-11-30 10 views
6

Ho creato un programma che visualizza un brindisi ogni volta che ricevo una chiamata in arrivo. Funziona benissimo su tutti i telefoni che ho provato, mostrando sullo schermo della chiamata in arrivo.Toast non visualizzato sullo schermo di blocco di HTC Sense 3.0

Ieri ho aggiornato HTC Desire S a Sense 3.0 (Android 2.3.5) e apparentemente ha una nuova schermata di blocco che visualizza le chiamate in arrivo. L'apertura della schermata di blocco mi porterà alla schermata di chiamata in arrivo "originale" e rispondere alla chiamata. Posso anche vedere il mio brindisi sulla schermata della chiamata originale solo per un secondo, prima che la chiamata risponda.

Il display del toast I utilizza un layout personalizzato e viene visualizzato da un servizio. Il servizio riceve un intento da un destinatario della trasmissione sulla chiamata in arrivo.

Io uso il seguente codice per mostrare il mio brindisi:

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(); 

C'è un modo per impostare in modo che il brindisi è mostrato sopra la nuova schermata di blocco Senso 3.0?

+0

come appare il file di layout di popup_toast? come hai superato KeyGuard?!? – bofredo

risposta

0

uso sottostante Codice

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

Il tuo codice è esattamente uguale al mio, ad eccezione dell'ordine di setView, setDuration e setGravity. Quindi questo codice ha funzionato per te su un HTC con Sense 3.0? – Franz

+0

me utilizzando Htc Desire, versione 2.2 funziona bene per me – sravan

+0

Il problema è con HTC Sense 3.0 (Android 2.3.5) in particolare. Stava funzionando bene su versioni precedenti. – Franz

2

Penso che il problema è un po 'più ampio. Nel mio caso, la schermata di blocco HTC senso 3.0 non consente la visualizzazione della finestra di dialogo delle attività (come nel caso del messaggio Toast). Quando la finestra di dialogo è sbloccata (attività attivata dal servizio in background) viene visualizzata correttamente. L'unico modo per visualizzare un messaggio sul blocco dello schermo sensibile HTC è usare la notifica - e molti sarebbero d'accordo che questo è un approccio consigliato (come non disturbare l'utente con i popup). Lo svantaggio è nella natura della notifica: scomparirà dopo un secondo o due. Quindi per il tipo di "ID chiamante", l'utente dovrebbe estrarre rapidamente HTC dalla tasca se vuole vedere chi sta chiamando e questo non è appropriato.

Forse OpenSense SDK contiene API per abilitare la visualizzazione del messaggio sul blocco schermo per un periodo più lungo. Nel mio primo sguardo ho trovato solo "senso in stile" schede ...

Qualcuno ha suggerito di sbloccare il telefono "programmazione" e quindi visualizzare un toast o dialogo. Questa non è una soluzione "felice" - e nemmeno sicura se è possibile.

so il mio post non è una risposta completa, ma spero che fornisce ulteriori dettagli sul problema di mostrare messaggi su HTC schermata di blocco senso 3.0.

Problemi correlati