Receptor de Android para múltiples acciones?

Pregunta sencilla: ¿puedo registrar un único BroadcastReceiver en varias acciones de intención? Esto es lo que estoy considerando:

<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> 

Así que en la clase myReceiver ' onReceive , ¿podría comprobar intent.getAction() para ACTION_MEDIA_BUTTON and ACTION_HEADSET_PLUG ?

Gracias.

Supongo que puedes tener múltiples s cada uno con su elemento de acción.

 <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> 

Y luego compruebe la acción del Intent en el onReceive del receptor.

Sí, un BroadcastReceiver puede recibir intentos con varias acciones. Y su ejemplo es válido. Puede tener varias "acciones" en un filtro. Además, en este caso es más apropiado que lo que parece una manera más segura: crear varios filtros con una sola acción (como se propone en la respuesta de @advantej). Tener varias acciones en un filtro comunica claramente que usted está esperando una de varias acciones (lógico "o").

Estas palabras de " Intento y filtros de intención " explican la elección entre uno y muchos filtros de intención para casos más complejos:

Está bien crear un filtro que incluya más de una instancia de <action>, <data> o <category>. Si lo hace, sólo tiene que estar seguro de que el componente puede manejar todas y cada una de las combinaciones de los elementos de filtro.

Cuando se desea manejar múltiples tipos de intentos, pero sólo en combinaciones específicas de acción, datos y tipo de categoría, es necesario crear filtros de intención múltiple.

Vea los diferentes ejemplos de filtros de intenciones aquí: AndroidManifest.xml

Sí, puede tener varias acciones para el mismo BroadcastReceiver. De hecho, lo que hiciste es justo:

 <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> 

Ya he utilizado este enfoque en un proyecto y funcionó.

Sobre la prioridad que estableció:

https://developer.android.com/guide/topics/manifest/intent-filter-element.html

Android: priority La prioridad que se debe dar al componente principal con respecto a las intenciones de manejo del tipo descrito por el filtro. Este atributo tiene significado tanto para las actividades como para los receptores de radiodifusión:

Proporciona información sobre cómo una actividad es capaz de responder a una intención que coincida con el filtro, en relación con otras actividades que también podrían responder a la intención. Cuando una intención podría ser manejada por múltiples actividades con diferentes prioridades, Android considerará sólo aquellos con valores de prioridad más alta como objetivos potenciales para la intención.

Controla el orden en que se ejecutan los receptores de difusión para recibir mensajes de difusión. Aquellos con valores de prioridad más altos se llaman antes de aquellos con valores más bajos. (El pedido se aplica sólo a mensajes síncronos, se ignora para mensajes asíncronos.)

Utilice este atributo sólo si realmente necesita imponer un orden específico en el que se reciben las emisiones o desea obligar a Android a preferir una actividad sobre otras.

El valor debe ser un entero, como "100". Los números más altos tienen una prioridad más alta. El valor predeterminado es 0. El valor debe ser mayor que -1000 y menor que 1000.

  • Se pierde el envío de datos a la actividad principal
  • Aplicación de inicio automático después del arranque completado en Android
  • Cómo utilizar IntentCompat.makeRestartActivityTask ()?
  • Android - Uso de Google Analytics v4 Campaign Measurement
  • ¿Qué es createChooser cuando tengo que usar Intents? ¿Qué podría hacer con este método?
  • Android OrderedBroadcast No funciona en la versión de lanzamiento
  • Administrador de alarmas no funciona en segundo plano en Android 6.0
  • No puede entender el filtro intencional
  • Android: url abierta en el navegador externo causa un bucle infinito
  • Cómo utilizar la intención de elegir el navegador de archivos para seleccionar el archivo
  • Saltar a la actividad directa de los padres cuando se presiona
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.