相关疑难解决方法(0)

使用BroadcastReceiver的清单中的ACTION_USER_PRESENT

关于是否可以通过清单捕获ACTION_USER_PRESENT屏幕解锁似乎有不同的意见.

这个线程意味着不能做到这一点:

Android广播接收器无法正常工作

这个帖子暗示可以做到:

ACTION_USER_PRESENT,ACTION_SCREEN_ON,ACTION_BOOT_COMPLETED的广播接收器

我无法使用2.3.3或3.2仿真器使用该事件.

有没有其他人有这方面的经验?或许可以分享一个代码示例?

android broadcastreceiver android-manifest

9
推荐指数
1
解决办法
1万
查看次数

android.intent.action.SCREEN_ON不能用作接收器意图过滤器

我正在尝试在打开屏幕时调用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)项目.

谷歌代码搜索显示了这一点,我下载了项目并同步了它,将其转换为使用最新工具,但它也无法拦截该事件.

http://www.google.com/codesearch/p?hl=en#_8L9bayv7qE/trunk/phxandroid-intent-query/AndroidManifest.xml&q=android.intent.action.SCREEN_ON

这可能不再支持了吗?

以前我已经能够通过调用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建议,我选择尝试删除长期服务并使用不同的技术.但是我仍然需要检测屏幕上的事件.

android broadcastreceiver

8
推荐指数
1
解决办法
3万
查看次数