Récepteur Android pour plusieurs actions?

Question simple: puis-je enregistrer un seul BroadcastReceiver dans plusieurs actions intentionnelles? Voici ce que je considère:

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

Donc, dans la classe MyReceiver ' onReceive , puis-je vérifier l' intent.getAction() pour ACTION_MEDIA_BUTTON and ACTION_HEADSET_PLUG ?

  • Sélection de plusieurs éléments dans ListView
  • Comment implémentez-vous le menu contextuel dans ListActivity sur Android?
  • Android 4.2 RadioButton android: drawableLeft bug?
  • Pourquoi RecognitionListener a cessé de fonctionner dans JellyBean?
  • Existe-t-il un moyen de modifier la position de départ par défaut de l'émulateur?
  • Charge de contexte à partir d'un fichier APK dans Android
  • Merci.

  • Aucun JNI_OnLoad n'a trouvé l'ignorance> Arrêt de l'application
  • Appcompat res values-v21 themes_base erreurs sur eclipse ne disparaissent pas
  • Android notification de l'écran hors / sur
  • "SELECT last_insert_rowid ()" renvoie toujours "0"
  • Application YouTube Android Play Video Intent
  • SaveDimensions gradle error - Android Studio 3.0 Canary 1
  • 4 Solutions collect form web for “Récepteur Android pour plusieurs actions?”

    Je suppose que vous pouvez avoir plusieurs s chacun ayant son élément d'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> 

    Ensuite, vérifiez l'action de l'intention dans la réception du récepteur.

    Oui, un BroadcastReceiver peut recevoir des intentions avec plusieurs actions. Votre exemple est valide. Vous pouvez avoir plusieurs «actions» dans un seul filtre. De plus, dans ce cas, il est plus approprié que ce qui semble être plus sûr: créer plusieurs filtres avec une seule action (comme proposé dans la réponse par @advantej). Avoir plusieurs actions dans un filtre communique clairement que vous attendez une de plusieurs actions (logique "ou").

    Ces mots de " Intent and Intent filters " expliquent le choix entre un ou plusieurs filtres intentionnels pour des cas plus complexes:

    Il est bon de créer un filtre qui comprend plus d'une instance de <action>, <data> ou <category>. Si vous le faites, il vous suffit d'être certain que le composant peut gérer toutes et toutes les combinaisons de ces éléments de filtre.

    Lorsque vous souhaitez gérer plusieurs types d'intentions, mais uniquement dans des combinaisons spécifiques d'action, de données et de type de catégorie, vous devez créer plusieurs filtres d'intention.

    Veuillez voir différents exemples de filtres d'intention ici: AndroidManifest.xml

    Oui, vous pouvez avoir plusieurs actions pour le même BroadcastReceiver. En fait, ce que vous avez fait est juste:

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

    J'ai déjà utilisé cette approche dans un projet et cela a fonctionné.

    Sur la priorité que vous avez définie:

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

    Android: priority La priorité qui devrait être donnée au composant parent en ce qui concerne les intentions de traitement du type décrit par le filtre. Cet attribut a une signification pour les activités et les récepteurs de diffusion:

    Il fournit des informations sur la capacité d'une activité à répondre à une intention qui correspond au filtre, par rapport à d'autres activités qui pourraient également répondre à l'intention. Lorsqu'une intention peut être prise en charge par plusieurs activités avec des priorités différentes, Android considérera que ceux qui ont des valeurs de priorité plus élevées comme cibles potentielles pour l'intention.

    Il contrôle l'ordre dans lequel les récepteurs de diffusion sont exécutés pour recevoir des messages diffusés. Ceux qui ont des valeurs de priorité plus élevée sont appelés avant ceux avec des valeurs inférieures. (L'ordre s'applique uniquement aux messages synchrones, il est ignoré pour les messages asynchrones).

    Utilisez cet attribut uniquement si vous avez vraiment besoin d'imposer un ordre spécifique dans lequel les émissions sont reçues ou souhaitez forcer Android à préférer une activité par rapport à d'autres.

    La valeur doit être un nombre entier, tel que "100". Les numéros plus élevés ont une priorité plus élevée. La valeur par défaut est 0. La valeur doit être supérieure à -1000 et inférieure à 1000.

    coAndroid est un fan Android de Google, tout sur les téléphones Android, Android Wear, Android Dev et Android Games Apps.