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 ?

  • Comment supprimer l'icône de messagerie de l'émulation Android Studio
  • Comment définir la couleur du texte de TextView dans le code?
  • Erreur lors de la mise en œuvre du développement GoogleApiClient Builder pour Android
  • Le rechargement WebView lorsque Fragment dans ViewPager est conservé sous BackStack
  • Android - Drag and Drop - Animation shadow to destination
  • L'emplacement d'Apk dans le nouveau studio Android
  • Merci.

  • Comment appliquer un style personnalisé à SwitchCompat
  • Comment ouvrir un SMS spécifique dans Android
  • Comment puis-je m'assurer que la fenêtre affiche toujours le clavier sur le dessus?
  • Erreur: (1, 0) Plugin avec id 'com.android.application' introuvable
  • Ajax post ne fonctionne pas - Jquery Phonegap Android
  • Avantage et inconvénient de CardView
  • 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.