我试图在屏幕打开时调用 BroadcastReceiver。在我的 AndroidManifest.xml 中,我指定了:
<receiver android:name="IntentReceiver">
<intent-filter>
<action android:name="android.intent.action.SCREEN_ON"></action>
</intent-filter>
</receiver>
但是,似乎从未调用过接收器(断点不会触发,日志语句被忽略)。我已经将 SCREEN_ON 换成了 BOOT_COMPLETED 进行测试,这确实被调用了。
这是一个 1.6(SDK 级别 4)项目。
谷歌代码搜索揭示了这一点,我下载了项目并同步了它,将其转换为使用最新工具,但它也无法拦截该事件。
这可能不再受支持吗?
以前我已经能够像这样调用 Context.registerReceiver() 成功拦截这个事件
registerReceiver(new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
// ...
}
}, new IntentFilter(Intent.ACTION_SCREEN_ON));
然而,这是由一个长期存在的服务执行的。根据 CommonsWare 的明智建议,我选择尝试删除长期服务并使用不同的技术。但我仍然需要检测屏幕关闭和开启事件。