【发布时间】:2017-04-20 21:46:48
【问题描述】:
我正在尝试在屏幕打开时调用 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)项目。
Google 代码搜索发现了这一点,我下载了项目并同步了它,将其转换为使用最新工具,但它也无法拦截该事件。
这可能不再受支持吗?
以前我可以像这样调用 Context.registerReceiver() 成功拦截此事件
registerReceiver(new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
// ...
}
}, new IntentFilter(Intent.ACTION_SCREEN_ON));
但是,这是由长期存在的 Service 执行的。根据 CommonsWare 的明智建议,我选择尝试删除长期服务并使用不同的技术。但我仍然需要检测屏幕关闭和开启事件。
【问题讨论】: