Android broadcast receiver doesn't receive ACTION_SCREEN_ON

后端 未结 3 1152
一生所求
一生所求 2020-12-17 05:36

I tried to register the receiver in my service with the following code:

IntentFilter filter = new IntentFilter(Intent.ACTION_SCREEN_ON);
ScreenReceiver SR =         


        
相关标签:
3条回答
  • 2020-12-17 06:05

    Read this tutorial Handling Screen OFF and Screen ON Intents, it could help you.

    0 讨论(0)
  • 2020-12-17 06:10

    Maybe you should check which intent is coming inside your onReceive() method:

    if(intent.getAction().equals(Intent.ACTION_SCREEN_ON)
    {
        ...
    }
    

    Also, have you tried putting a breakpoint in there?

    Other advice, instead of using System.out.println use the API native log which would be in your case

    Log.i("ScreenReceiver""RECEIVED");
    

    And you can read the log in the logcat.

    0 讨论(0)
  • 2020-12-17 06:27

    It's work for me on Android 4.0.4

    BroadcastReceiver receiver = new BroadcastReceiver() {
    
        @Override
        public void onReceive(Context context, Intent intent) {
            if (intent == null)
                return;
            //do something you need when broadcast received
    
        }
    };
    IntentFilter filter = new IntentFilter()
    filter.addAction(Intent.ACTION_SCREEN_ON);
    filter.addAction(Intent.ACTION_SCREEN_OFF);
    
    context.registerReceiver(receiver, filter);
    

    As for register receiver with action Intent.ACTION_SCREEN_ON and Intent.ACTION_SCREEN_OFF in Manifest.xml it don't help because Android code in PowerManagerService.java following:

    ...
    mScreenOnIntent = new Intent(Intent.ACTION_SCREEN_ON);
    mScreenOnIntent.addFlags(Intent.FLAG_RECEIVER_REGISTERED_ONLY);
    mScreenOffIntent = new Intent(Intent.ACTION_SCREEN_OFF);
    mScreenOffIntent.addFlags(Intent.FLAG_RECEIVER_REGISTERED_ONLY); 
    ...
    
    0 讨论(0)
提交回复
热议问题