我如何收到第三方意图,然后对其采取行动?

时间:2012-04-28 16:16:00

标签: android android-intent broadcastreceiver

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

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

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

1 个答案:

答案 0 :(得分:1)

  

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

步骤1:为WidgetLocker操作与BroadcastReceivers创建单独的ACTION_USER_PRESENT

步骤2:收到LOCKED后,使用PackageManagersetComponentEnabledSetting()停用您的ACTION_USER_PRESENT收件人。

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

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