2010-09-28 18 views

risposta

4

È necessario utilizzare lo KeyGuardManager per sbloccare automaticamente il dispositivo e quindi acquisire il Wake Lock.

KeyguardManager kgm = (KeyguardManager)getSystemService(Context.KEYGUARD_SERVICE); 
    boolean isKeyguardUp = kgm.inKeyguardRestrictedInputMode(); 
    KeyguardLock kgl = kgm.newKeyguardLock("Your Activity/Service name"); 

    if(isKeyguardUp){ 
    kgl.disableKeyguard(); 
    isKeyguardUp = false; 
    } 

    wl.acquire(); //use your wake lock once keyguard is down. 
+0

Grazie che funziona – Jason

10

per mostrare l'attività, senza che respinge il blocco della tastiera provate questo:

getWindow().addFlags(WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON); 
getWindow().addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED); 
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); 
setContentView(); 
+0

Grazie Ho trovato questo 2, E 'la soluzione migliore, ma solo se si utilizza Android 2.0 + – Jason

+0

abbastanza hacky, ma fa quello che dovrebbe! – bofredo

2

per mostrare un popup in cima ad una schermata di blocco provare questo, dal mio altro answer:

AlertDialog alertDialog = new AlertDialog.Builder(context).create(); 
     alertDialog.getWindow().setType(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED); 
     alertDialog.show(); 

Per mostra l'attività in cima a una schermata di blocco, o in pratica rimuovi la schermata di blocco all'avvio dell'attività, prova questo:

public void onCreate(Bundle savedInstanceState){ 
    getWindow().addFlags(WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD); 
    ... 
} 

Entrambe queste opzioni richiedono api 5+

Problemi correlati