Android broadcast receiver doesn't receive ACTION_SCREEN_ON

后端 未结 3 1160
一生所求
一生所求 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: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); 
    ...
    

提交回复
热议问题