Comment accrocher des appels sortants dans Android?
Je développe une application où l'une des choses dont nous avons besoin est de contrôler les appels sortants, à tout le moins être en mesure de l'arrêter à partir de notre application.
J'ai essayé d'utiliser Intent.ACTION_CALL
d'une activité existante:
Intent callIntent = new Intent(Intent.ACTION_CALL, Uri.parse("tel:" + phoneNumber));
startActivity(callIntent);
Mais l'arrêt de l'appel semble être refusé par le biais de l'API.
Pouvez-vous suggérer de certains solution de contournement?
Par exemple: l'activation du mode avion lors de l'appel? Juste un exemple; ce hack ne fonctionne pas pour moi.
- La résiliation de l'appel est possible. TextMe4Callback sur l'Android market ne ce.
- A l'aide de
BroadcastReceiver
travail pour vous? Pourriez-vous revoir cette question et/ou d'accepter une réponse?
Vous devez vous connecter pour publier un commentaire.
La capture de l'appel sortant dans un
BroadcastReceiver
a été mentionné et qui est certainement la meilleure façon de le faire si vous voulez mettre fin à l'appel avant de composer.Une fois de numérotation ou en appel, cependant, cette technique ne fonctionne plus. La seule façon de raccrocher que j'ai rencontré jusqu'à présent, c'est de le faire par le biais de Java La réflexion. Comme il ne fait pas partie de l'API publique, vous devez faire attention à l'utiliser, et ne pas compter sur elle. Tout changement à la composition interne d'Android va briser efficacement votre demande.
Prasanta le blog de Paul démontre comment il peut être accompli, que j'ai résumées ci-dessous.
L'obtention de la
ITelephony
objet:La fin de l'appel:
BroadcastReceiver
est correctement enregistrée à partir de la manifester.Essayez ceci:
(J'ai utilisé La réflexion d'accéder à des fonctionnalités de téléphonie avancées et modifier des choses)
BroadcastReceiver
avec une priorité de 0.ACTION_NEW_OUTGOING_CALL
intention dans sononReceive
méthodesetResultData(null)
dans la même méthodeCela permettra d'éviter l'appel, de l'ouverture (tant que votre récepteur est le dernier processus de l'intention, je pense)
Vous pouvez essayer de l'activer puis désactiver le mode avion:
Voici la plus à jour du code, qui va travailler pour Android P trop, parce qu'il a une officielle de l'API pour elle (ici) :
dans le manifeste, ajouter ceci:
Dans le code, utilisez ceci:
Java:
ou dans Kotlin:
Pour Ilana:
En plus dans le Manifeste mettre dans la section package:
C'est tout.
Compte tenu de la possibilité pour les merveilleux de mal, je serais surpris si cela est autorisé.
Ce fil dit catégoriquement qu' l'API ne peut pas mettre fin à un appel. D'autres ont essayé.
Selon la documentation sur ACTION_NEW_OUTGOING_CALL
setResultData(null)
.