2016-03-21 4 views
1

Dies ist mein Code.SCREEN_OFF BroadcastReceiver funktioniert nicht

public class MyActivity extends Activity { 
    ... 
    @Override 
    protected void onStart() { 
     super.onStart(); 

     IntentFilter intentFilter = new IntentFilter(); 
     intentFilter.addAction("com.my.ACTION"); 
     intentFilter.addAction(Intent.ACTION_SCREEN_OFF); 

     registerReceiver(broadcastReceiver, intentFilter); 
    } 

    @Override 
    protected void onStop() { 
     super.onStop(); 

     unregisterReceiver(broadcastReceiver); 
    } 

    ... 

    private BroadcastReceiver broadcastReceiver = new BroadcastReceiver() { 
     @Override 
     public void onReceive(Context context, Intent intent) { 
      String action = intent.getAction(); 

      if ("com.my.ACTIOIN".equals(action)) { 
       updateMessageInformation(intent); 
       updateDialog(); 
      } else if (Intent.ACTION_SCREEN_OFF.equals(action)) { 
       finish(); 
      } 
     } 
    }; 
    ... 
} 

com.my.ACTION wird erkannt und korrekt arbeitet

Aber wird Intent.ACTION_SCREEN_OFF(android.intent.action.SCREEN_OFF) nicht erkannt, wenn der Bildschirm ausgeschaltet.

Dieser Activity ist Start von Service (von anderen Empfänger starten).

Was würde ich falsch machen?

+1

Haben Sie die Registrierung bei onDestroy aufgehoben? Vielleicht wird die Aktivität zerstört, bevor die Absicht gesendet wird, sodass sie von der Aktivität nicht empfangen werden kann? – galex

+0

Ich melde den Empfänger auf onStop ab. –

+0

@galex Danke. Wenn Sie das Unregister auf onDestroy verschieben, funktioniert es ordnungsgemäß. –

Antwort