Question

Alors maintenant, j'ai mon BroastcastReceiver déclaré dans le fichier manifeste ...

   <receiver android:name=".MyReceiver">
    <intent-filter>
        <action android:name="android.intent.action.CALL_BUTTON" />
    </intent-filter>
   </receiver>

Je veux saisir l'intention lorsque le bouton d'appel est enfoncé.

Voici mon code ...

 public class MyReceiver extends BroadcastReceiver {

     @Override
     public void onReceive(Context context, Intent intent) {

         Toast.makeText(context, "intent received", Toast.LENGTH_LONG);

         if(intent.getAction().equals("android.intent.action.CALL_BUTTON")) {
             Toast.makeText(context, "call button pressed", Toast.LENGTH_LONG);
         }

     }

 }

Cependant, je ne vois pas le pain grillé quand je frappe le bouton d'appel. Ai-je raté quelque chose?

Ceci est la suite en utilisant une réponse à cette question ...

Comment utiliser Intentions d'un service ou de diffusion récepteur

Était-ce utile?

La solution

La réponse courte est que vous ne pouvez pas faire ce que vous essayez de faire.

L'action « ACTION_CALL_BUTTON » est une « action à partir de l'activité » plutôt que d'une « action de diffusion ». Il peut être utilisé dans une intention utilisée dans startActivity pour lancer une activité qui devrait répondre à la touche d'appel enfoncée. Ce que vous voulez doit être informé lorsque le bouton d'appel est pressé, et le système ne diffuse pas une intention d'annoncer que.

Vous pouvez inclure le même intent-filter une activité pour avoir venir comme une option pour l'utilisateur de sélectionner lorsqu'ils appuient sur le bouton d'appel.

Qu'est-ce que vous espérez faire lorsque l'utilisateur appuie sur le bouton d'appel?

Autres conseils

Par la documentation, ACTION_CALL_BUTTON n'est pas une émission action; plutôt, il est une action d'activité.

Voir le message de Dianne à ce sujet dans un autre thread.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top