关于是否可以通过清单捕获ACTION_USER_PRESENT屏幕解锁似乎有不同的意见.
这个线程意味着不能做到这一点:
这个帖子暗示可以做到:
ACTION_USER_PRESENT,ACTION_SCREEN_ON,ACTION_BOOT_COMPLETED的广播接收器
我无法使用2.3.3或3.2仿真器使用该事件.
有没有其他人有这方面的经验?或许可以分享一个代码示例?
我正在尝试在打开屏幕时调用BroadcastReceiver.在我的AndroidManifest.xml中,我指定了:
<receiver android:name="IntentReceiver">
<intent-filter>
<action android:name="android.intent.action.SCREEN_ON"></action>
</intent-filter>
</receiver>
Run Code Online (Sandbox Code Playgroud)
然而,似乎永远不会调用接收器(断点不会触发,忽略日志语句).我已经为BOOT_COMPLETED换了SCREEN_ON进行测试,这确实被调用了.
这是一个1.6(SDK级别4)项目.
谷歌代码搜索显示了这一点,我下载了项目并同步了它,将其转换为使用最新工具,但它也无法拦截该事件.
这可能不再支持了吗?
以前我已经能够通过调用Context.registerReceiver()来成功拦截此事件
registerReceiver(new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
// ...
}
}, new IntentFilter(Intent.ACTION_SCREEN_ON));
Run Code Online (Sandbox Code Playgroud)
然而,这是由一个长寿服务.遵循CommonsWare的sage建议,我选择尝试删除长期服务并使用不同的技术.但是我仍然需要检测屏幕上的事件.