2010-09-28 5 views

Répondre

4

Vous devez utiliser le KeyGuardManager pour déverrouiller l'appareil automatiquement, puis acquérir votre 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

Thankyou qui fonctionne – Jason

10

Pour afficher l'activité sans fermer la keyguard essayer ceci:

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

Merci j'ai trouvé ce 2, il est la meilleure solution, mais seulement si vous utilisez Android 2.0 + – Jason

+0

assez hacky, mais il fait ce qu'il faut! – bofredo

2

Pour afficher une fenêtre au-dessus d'un écran de verrouillage essayer, de mon autre answer:

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

Pour afficher l'activité sur un écran de verrouillage ou supprimer l'écran de verrouillage lorsque l'activité démarre, essayez ceci:

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

Ces deux options nécessitent api 5+

Questions connexes