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.

  • Android - Désactiver le bouton Retour du périphérique
  • Nested RecyclerView. Comment éviter que le RecyclerView parental ne se déroule lorsque Child RecyclerView se défile?
  • L'évolution de l'état de ToggleButton est programmée plutôt que automatiquement dans Android?
  • Avis Android avec RemoteViews - ayant une activité associée à la mise en page RemoteView
  • Est-il possible de faire des animations de transition lors de la modification de vues dans la même activité?
  • Faible qualité d'image / image lors de la capture de la caméra
  • 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?

  • Android: Transformez un bitmap en flux d'entrée
  • Firebase android: rend le nom d'utilisateur unique
  • Afficher le calendrier dans une application Android
  • Android NDK STL c ++ _ partagé avec LIBCXX_FORCE_REBUILD résultats dans std :: stringstream NOP
  • Quelle est l'utilisation de New String in toArray (nouvelle String );
  • Comment utiliser getSharedPreferences dans Android
  • 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.