Android的广播接收器没有收到ACTION_SCREEN_ON接收器、Android、ACTION_SCREEN_ON

2023-09-13 00:55:31 作者:泡8喝9玩10尚

我试图注册接收我用下面的code服务:

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

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

这是我的广播接收器:

and this is my broadcast receiver:

public class ScreenReceiver extends BroadcastReceiver { 
    @Override
    public void onReceive(Context context, Intent intent) {
        System.out.println("RECEIVED");
    }
}

我甚至宣称它在清单中,但没有任何过滤器:

I have even declared it in the manifest but without any filters:

<receiver android:name=".ScreenReceiver" android:enabled="true" />

不过,无论我做什么,我不能似乎可以当我打开我的屏幕上获得的意图。

But whatever I do, I can't seem to be able to receive the intent when I turn my screen on.

这是意图在安卓ICS或JB禁用还是我失去了一些东西?

Is this intent disabled in android ICS or JB or am i missing something?

任何帮助将是AP preciated!

Any help would be appreciated!

推荐答案

这是在Android 4.0.4为我工作。

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);

至于寄存器接收用行动Intent.ACTION_SCREEN_ON和Intent.ACTION_SCREEN_OFF中的Manifest.xml它没有帮助,因为Android的code在PowerManagerService.java以下内容:

...
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); 
...