可以在清单中注册ACTION_USER_PRESENT BroadcastReceiver吗?

Ham*_*amy 2 android broadcastreceiver android-manifest

我看到多个广播(例如ACTION_TIME_TICK)无法在清单中注册,必须通过显式注册Context.registerReceiver().我在使用ACTION_USER_PRESENT广播意图时遇到问题.具体来说,我在模拟器上测试,我的应用程序保持强制关闭错误:

08-30 09:44:23.397: ERROR/AndroidRuntime(290): java.lang.RuntimeException: Unable to start receiver me.turnerha.RegisterListeners: java.lang.IllegalArgumentException: Receiver not registered: me.turnerha.RegisterListeners@43d05690
Run Code Online (Sandbox Code Playgroud)

这是由

08-30 09:44:23.397: ERROR/AndroidRuntime(290): Caused by: java.lang.IllegalArgumentException: Receiver not registered: me.turnerha.RegisterListeners@43d05690
Run Code Online (Sandbox Code Playgroud)

我的清单很简单:

    <receiver android:name=".RegisterListeners">
        <intent-filter>
            <action android:name="android.intent.action.SCREEN_ON" />
        </intent-filter>
    </receiver>
Run Code Online (Sandbox Code Playgroud)

有什么想法吗?我本质上是在创建一个在安装应用程序后尽快唤醒的Receiver.第一次被唤醒时,它会注册一些监听器,然后它会自动取消注册,因此它永远不会再被调用.(我真的希望在您的应用程序安装后立即触发一个意图,以允许一点点设置:))

Com*_*are 7

正确 - 既不能ACTION_SCREEN_ONACTION_USER_PRESENT不能在清单中登记.我已就此问题提交了文档错误.

  • 只要屏幕上有任何锁定方式,包括"拖动此栏以解锁"默认值,ACTION_USER_PRESENT就可以在清单中注册并起到(貌似)的作用.如果您可以通过按电源按钮无障碍地到达主屏幕,则在我的测试中,意图似乎不会触发. (7认同)
  • 我不知道是否总是这样,但是`ACTION_USER_PRESENT`*可以*在清单中注册.它现在在模拟器和我的Desire Z(2.2)中都适用于我. (2认同)