Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/220.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android多动作接收器?_Android_Android Intent_Broadcastreceiver - Fatal编程技术网

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筛选器可以有多个操作:文档中说,
应用程序组件应该为其可以执行的每个唯一作业声明单独的筛选器。
这将允许对不同操作进行更细粒度的详细信息。