我试图让我在服务中创建的BroadcastReceiver接收Screen_On和Screen_Off事件。它不起作用,这就是我现在正在尝试的。
//OnCreate Method for the service
@Override
public void onCreate() {
super.onCreate();
myBroadcast = new MyBroadcastReceiver();
IntentFilter screenOn_Off = new IntentFilter();
screenOn_Off.addAction(Intent.ACTION_SCREEN_OFF);
screenOn_Off.addAction(Intent.ACTION_SCREEN_ON);
registerReceiver(myBroadcast, screenOn_Off);
}
//Inner class for the broadcast receiver, also in the service.
public class MyBroadcastReceiver extends BroadcastReceiver{
@Override
public void onReceive(Context context, Intent intent) {
Log.d("Broadcast received", "Broadcast received");
if (intent.getAction().equals(Intent.ACTION_SCREEN_ON)){
startTimers();
} else if (intent.getAction().equals(Intent.ACTION_SCREEN_OFF)){
screenLocked();
}
}
};
//Declaration of receiver in manifest.
<receiver
android:name="com.bla.bla.bla$MyBroadcastReceiver"
android:enabled="true">
</receiver>
我故意没有包含screen_on和off的intent过滤器,因为我读过那些必须以编程方式声明,包括它们没有区别。