Comment accepter un appel entrant en cliquant sur un bouton?

J'essaie d'implémenter mon propre appel téléphonique.

Ce que je veux faire, c'est que si un appel est entré, le numéro de téléphone entrant et une image sont affichés et, si j'appuie sur un bouton, l'appel entrant sera accepté / répondu.

Le code associé est:

@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); answerButton = (Button) findViewById(R.id.pickup); answerButton.setOnClickListener(new OnClickListener() { public void onClick(final View v) { Intent intent = new Intent("android.intent.action.ANSWER"); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); startActivity(intent); } }); 

Malheureusement, le code ne fonctionne pas. Au début, une exception est lancée si j'appuie sur mon bouton de réponse:

ActivityNotFoundException: Aucune activité trouvée pour traiter Intent {
Act = android.intent.action.ANSWER

Ensuite, j'ai ajouté une entrée dans AndroidManifest.xml:

 <uses-permission android:name="android.permission.CALL_PHONE" /> 

Je lance l'application à nouveau, il n'y a plus d'exception. Cependant, je doute que l'appel entrant ne soit pas vraiment accepté. Parce que si vous appuyez sur le bouton de réponse de l'écran de l'Android (bouton vert), l'appel entrant est accepté et une icône d'appel vert s'affiche également dans le coin supérieur gauche de l'écran de l'émulateur, alors que mon application ne fonctionne pas.

J'ai également lu le code source de l'application Téléphone dans la source Android. Il existe une méthode telle que acceptCall () dans la classe Phone. Mais ces codes me semblent difficiles à utiliser, car il existe de nombreuses déclarations d'importation dans le code, telles que:

 import com.android.internal.telephony.Call; import com.android.internal.telephony.CallStateException; import com.android.internal.telephony.CallerInfo; import com.android.internal.telephony.CallerInfoAsyncQuery; import com.android.internal.telephony.Connection; import com.android.internal.telephony.MmiCode; import com.android.internal.telephony.Phone; 

Et si j'ajoute ces importations dans mon code, il y aura trop d'erreurs, telles que:
The import com.android.internal.telephony cannot be resolved .

Quelle est la manière la plus simple et la plus simple pour mon problème?

  • Quelles informations puis-je obtenir lors d'un appel téléphonique à l'aide de l'API Android?
  • Modification du flux audio d'appel dans Android 4.0 ICS
  • Comment puis-je appeler le numéro d'urgence par programme
  • La vérification Android a un appel téléphonique actif
  • Puis-je faire un appel téléphonique depuis HTML sur Android?
  • Qu'arrive-t-il à l'application Android lorsqu'un appel téléphonique interrompt l'application?
  • Jouer un clip audio sur un appel en cours
  • Android: pouvez-vous envoyer / recevoir des données le long d'un phonecall?
  • 5 Solutions collect form web for “Comment accepter un appel entrant en cliquant sur un bouton?”

    Ajouter la catégorie " android.intent.category.DEFAULT " ( Intent.CATEGORY_DEFAULT )

    L'intention android.intent.action.ANSWER ne fonctionne pas comme prévu. Il existe une solution de contournement en émulant le bouton bluetooth pour répondre à l'appel entrant. Vous pouvez voir un exemple du projet de réponse automatique .

    Vous devez créer un récepteur de diffusion dans lequel vous recevrez l'événement lorsque votre téléphone sonne et, après cela, vous pouvez lancer l'activité souhaitée. Vous ne pouvez pas remplacer l'écran d'appel entrant par défaut jusqu'à l'utilisation de ROM CUSTOM. Et n'oubliez pas de définir la priorité dans le récepteur de diffusion dans le fichier manifeste. Une fois que vous obtenez l'événement, vous pouvez utiliser l'objet ITelephony à l'aide de la réflexion. Vous pouvez également vous fournir des méthodes pour répondre ou rejeter l'appel.

    Ceci est possible en utilisant le package com.android.internal.telephony , mais vous devez trouver quelque chose pour utiliser ces méthodes dans eclipse et votre application doit être compilée comme une application système utilisant le code source Android.

    Modifiez votre méthode d'acceptation par ceci:

     public static void acceptCall(Context context) { Intent buttonUp = new Intent(Intent.ACTION_MEDIA_BUTTON); buttonUp.putExtra(Intent.EXTRA_KEY_EVENT, new KeyEvent(KeyEvent.ACTION_UP, KeyEvent.KEYCODE_HEADSETHOOK)); context.sendOrderedBroadcast(buttonUp, "android.permission.CALL_PRIVILEGED"); } 
    coAndroid est un fan Android de Google, tout sur les téléphones Android, Android Wear, Android Dev et Android Games Apps.