0

我的应用程序依赖于ACTION_USER_PRESENT被触发的意图,因此我在清单中设置了一个接收器,并且我有一个在接收到意图时启动服务的类。

但是,当用户使用像 WidgetLocker 这样的锁屏替换应用程序时,ACTION_USER_PRESENTintent 可能永远不会发送,或者可能会发送很多次。(一旦发送了 5 次......) WidgetLocker 的网站解释说,该应用程序确实发送了自己的解锁意图,com.teslacoilsw.widgetlocker.intent.UNLOCKED. 在 WidgetLocker 的某些配置中,ACTION_USER_PRESENT可能会在用户解锁屏幕之前被触发,所以我被告知最好设置一个检查com.teslacoilsw.widgetlocker.intent.LOCKED,然后等待接收UNLOCKED意图并完成我的工作。

我的问题是我不确定如何为第三方意图设置接收器。我已经在清单中将动作添加到我的接收器中,我知道我的广播接收器会接收它们,但我需要将它们过滤掉。主要是,如果我拿起LOCKED意图,我想忽略任何ACTION_USER_PRESENT意图,而是等待UNLOCKED意图,但我不知道如何在收到不同的意图时等待。

4

1 回答 1

1

主要是,如果我选择 LOCKED 意图,我想忽略任何 ACTION_USER_PRESENT 意图,而是等待 UNLOCKED 意图,但我不知道如何在收到不同意图时等待一个意图。

第 1 步:BroadcastReceivers为 WidgetLocker 操作与ACTION_USER_PRESENT.

步骤#2:收到后LOCKED,使用PackageManagersetComponentEnabledSetting()禁用您的ACTION_USER_PRESENT接收器。

步骤#3:收到后UNLOCKED,使用PackageManagersetComponentEnabledSetting()重新启用您的ACTION_USER_PRESENT接收器。

这在极端情况下可能会有点冒险(例如,用户在 时弹出电池LOCKED),但这是一个起点。

于 2012-04-28T16:31:09.470 回答