Android多动作接收器?
简单的问题-我可以将一个Android多动作接收器?,android,android-intent,broadcastreceiver,Android,Android Intent,Broadcastreceiver,简单的问题-我可以将一个广播接收器注册为多个意图操作吗?以下是我正在考虑的: <receiver android:name=".myReceiver"> <intent-filter android:priority="1000000"> <action android:name="android.intent.action.MEDIA_BUTTON" /> <action android:name="androi
广播接收器注册为多个意图操作吗?以下是我正在考虑的:
<receiver android:name=".myReceiver">
<intent-filter android:priority="1000000">
<action android:name="android.intent.action.MEDIA_BUTTON" />
<action android:name="android.intent.action.ACTION_HEADSET_PLUG" />
</intent-filter>
</receiver>
因此,在myReceiver
class'onReceive
中,我可以检查intent.getAction()
中的ACTION\u媒体按钮和ACTION\u耳机插头
?我想您可以有多个,每个都有其ACTION元素
<receiver android:name=".myReceiver">
<intent-filter android:priority="1000000">
<action android:name="android.intent.action.ACTION_HEADSET_PLUG" />
</intent-filter>
<intent-filter android:priority="1000000">
<action android:name="android.intent.action.MEDIA_BUTTON" />
</intent-filter>
</receiver>
然后在接收器的onReceive中检查意图的动作。是的,一个广播接收器可以通过几个动作接收意图。
你的例子是正确的。在一个筛选器中可能有多个“操作”。
此外,在这种情况下,它比看起来更安全的方法更合适:用一个动作创建几个过滤器(正如@advantej在回答中提出的)。在一个过滤器中有多个操作清楚地表明您期望多个操作中的一个(逻辑“或”)
来自“”的这些词解释了在更复杂的情况下,一个与多个意图过滤器之间的选择:
可以创建包含多个实例的筛选器
是的,您可以对同一个广播接收器执行多个操作。事实上,你所做的是正确的:
<receiver android:name=".myReceiver">
<intent-filter android:priority="1000000">
<action android:name="android.intent.action.ACTION_HEADSET_PLUG"/>
<action android:name="android.intent.action.MEDIA_BUTTON" />
</intent-filter>
</receiver>
我已经在一个项目中使用过这种方法,而且效果很好。关于您设置的优先级:
安卓:优先权
对于过滤器所描述类型的处理意图,应给予父组件的优先级。此属性对活动和广播接收器都有意义:
它提供了有关活动响应与筛选器匹配的意图的能力的信息,与其他也可以响应该意图的活动相比。当意图可以由具有不同优先级的多个活动处理时,Android将只考虑具有较高优先级值的那些作为意图的潜在目标。
它控制执行广播接收器以接收广播消息的顺序。具有较高优先级的值在具有较低优先级的值之前被调用。(该顺序仅适用于同步消息;异步消息忽略该顺序。)
仅当您确实需要强制广播接收的特定顺序,或者想要强制Android选择某个活动而不是其他活动时,才使用此属性
该值必须是整数,例如“100”。数字越大,影响越大
更高的优先级。默认值为0。该值必须更大
小于-1000和小于1000
实际上,intent筛选器可以有多个操作:文档中说,应用程序组件应该为其可以执行的每个唯一作业声明单独的筛选器。
这将允许对不同操作进行更细粒度的详细信息。