我的应用程序依赖于被触发的意图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
意图,但我不知道如何等待意图收到另一个。
答案 0 :(得分:1)
主要是,如果我拿起LOCKED意图,我想忽略任何ACTION_USER_PRESENT意图,而是等待UNLOCKED意图,但我不知道如何在收到另一个意图时等待意图。
步骤1:为WidgetLocker操作与BroadcastReceivers
创建单独的ACTION_USER_PRESENT
。
步骤2:收到LOCKED
后,使用PackageManager
和setComponentEnabledSetting()
停用您的ACTION_USER_PRESENT
收件人。
步骤3:收到UNLOCKED
后,使用PackageManager
和setComponentEnabledSetting()
重新启用您的ACTION_USER_PRESENT
收件人。
在边缘情况下这可能会有点冒险(例如,用户在LOCKED
时弹出电池),但这是一个起点。