Fin de l'Appel à Android
Je suis en train de terminer un nouvel appel sortant après quelques secondes. Voici mon code:
public class phonecalls extends Activity {
ComponentName cn;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
call();
}
private void call() {
try {
Intent callIntent = new Intent(Intent.ACTION_CALL);
callIntent.setData(Uri.parse("tel:123456789"));
startActivity(callIntent);
cn = new ComponentName(getApplicationContext(), Receiver.class);
} catch (ActivityNotFoundException activityException) {
Log.e("dialing-example", "Call failed", activityException);
}
}
}
Ma classe de récepteur est:
public class Receiver extends BroadcastReceiver {
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals(Intent.ACTION_NEW_OUTGOING_CALL)) {
setResultData(null);
}
}
}
Je suis incapable d'abandonner l'appel sortant. Je suis nouveau sur Android et ne pouvez pas sembler obtenir que cela fonctionne.
OriginalL'auteur user458295 | 2010-09-29
Vous devez vous connecter pour publier un commentaire.
Vous ne pouvez pas mettre fin à un appel en Android. Au moment où vous appelez startActivity(callIntent) vous donnant le contrôle à l'native de l'appelant demande. L'appel ne peuvent désormais plus être annulée par le biais de l'application téléphone.
D'ailleurs que votre code après le lancement de l'appel n'a pas beaucoup de sens. Vous n'êtes pas faire quelque chose avec l'Nomcomposant que vous êtes la création, de sorte que la méthode onReceive de votre Récepteur ne sera jamais appelé. Aussi, si le récepteur serait appelé le code dans la méthode onReceive ne fait rien pour modifier l'état de l'appel téléphonique.
OriginalL'auteur Janusz
La
BroadcastReceiver
classe devrait être intercepter tous les appels. Vérifiez si la classe de récepteur est correctement enregistrés dans leAndroidManifest.xml
:Cela dit, je ne crois pas qu'il est possible d'annuler l'appel après le récepteur de la fonction complète. J'ai essayé de déplacer
setResultData(null)
dans un thread avec quelques secondes de retard, mais je crois que la raison pour laquelle cela n'a aucun effet, parce que l'intention a déjà été exécuté et que l'appel a été lancé.La seule façon que cela pourrait être possible est d'obtenir vos mains sales à l'intérieur des appels d'API dans PhoneFactory. Il y a eu de nombreuses tentatives pour le faire (à ma connaissance sans succès), et il est un retentissant "ne faites pas cela!" de la communauté.
setResultData()
(c'est à dire en cours d'appel), I avez posté une réponse ici.OriginalL'auteur Paul Lammertsma
Vous pouvez activer le mode Avion (besoin d'un bon réglage) et désactiver peu de temps après.
Bien sûr, cela impliquerait une perte de la connectivité 3G pour une courte durée (quelques secondes).
OriginalL'auteur Sebastian Roth
Ma Solution
OriginalL'auteur kakopappa