Android的广播接收器没有收到ACTION_SCREEN_ON
问题描述:
我试图注册接收我用下面的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);
...