2011-10-21 23 views
8

Sembra che ci siano opinioni diverse sul fatto se sia possibile catturare lo sblocco della schermata ACTION_USER_PRESENT attraverso il manifest.ACTION_USER_PRESENT in manifest con BroadcastReceiver

Questo thread implica no, non si può fare:

Android Broadcast Receiver Not Working

Questo thread implica sì, può essere fatto:

Broadcast Receiver for ACTION_USER_PRESENT,ACTION_SCREEN_ON,ACTION_BOOT_COMPLETED

io non sono in grado di ottenere il evento che funziona con un emulatore 2.3.3 o 3.2.

Qualcun altro ha esperienza recente con questo? E forse un esempio di codice da condividere?

risposta

10

Utilizzare un ricevitore:

public class Receive extends BroadcastReceiver { 

if (intent.getAction() != null) { 
      if 
        (intent.getAction().equals(Intent.ACTION_USER_PRESENT)) { 
Intent s = new Intent(context, MainActivity.class); 
        s.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 

        context.startActivity(s); 
}} 

E nel tuo manifesto:

<receiver 
     android:name=".Receive" 
     android:enabled="true" 
     android:exported="false"> 
     <intent-filter> 
      <action android:name="android.intent.action.USER_PRESENT"/> 
     </intent-filter> 
    </receiver> 
+0

ho usato sopra il codice, ma prima volta che la mia attività di blocco è aperta, ma non so, dopo che lo chiamano automaticlly finestra di dialogo dello sfondo quando lo schermo è acceso. Perché questa finestra di dialogo si apre invece della mia attività di blocco quando lo schermo è attivo ... ti prego di aiutare rapidamente grazie ... –

+0

Non userei 'android: exported =" false "' che non è consentito anche a un ' '-Tag, vedi http://stackoverflow.com/questions/29081414/why-wont-this-broadcast-receiver-wor k-in-lecca # comment58423396_29274695 – OneWorld

Problemi correlati