我想检测屏幕关闭和事件,因为我创建了BroadcastReceiver,它只适用于应用程序运行时,当我从任务管理器中删除应用程序,然后它不起作用。BroadcastReceiver在ANDROID屏幕开/关应用程序未运行时
活动:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
try{
BroadcastReceiver myrcver = new BootReceiver();
IntentFilter screenStateFilter = new IntentFilter();
screenStateFilter.addAction(Intent.ACTION_SCREEN_ON);
screenStateFilter.addAction(Intent.ACTION_SCREEN_OFF);
registerReceiver(myrcver, screenStateFilter);
}
catch (Exception e){
e.fillInStackTrace();
}
}
Menifest:
<receiver
android:name=".BootReceiver"
android:enabled="true"
android:exported="true"
android:label="BootReceiver">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
<action android:name="android.intent.action.SCREEN_OFF" />
<action android:name="android.intent.action.SCREEN_ON" />
</intent-filter>
</receiver>
广播Reciever:
public class BootReceiver extends BroadcastReceiver {
boolean screenOff;
@Override
public void onReceive(Context context, Intent intent) {
try {
if ("android.intent.action.SCREEN_ON".equals(intent.getAction())) {
if (intent.getAction().equals(Intent.ACTION_SCREEN_OFF)) {
screenOff = true;
} else if (intent.getAction().equals(Intent.ACTION_SCREEN_ON)) {
screenOff = false;
}
Intent i = new Intent(context, UpdateService.class);
i.putExtra("screen_state", screenOff);
context.startService(i);
}
}
catch (Exception e){
e.fillInStackTrace();
}
}
}
帮助是欣赏提前。
“这只有当应用程序正在运行,当我从任务管理器中删除应用程序,然后它不工作正常作品“ - 正确。这些只是一些广播中的两个,它们只被传递给使用registerReceiver()的正在运行的进程。 – CommonsWare