2009-07-05 15 views
67

Je veux bloquer les appels de quelques numéros, pour cela je veux écrire une application de mon cru. Alors, quelles sont les API que je devrais utiliser? Fondamentalement, je veux être averti quand un appel arrive, je veux comparer les chiffres si c'est ce que je veux bloquer, je veux couper l'appel ou le mettre en sourdine ou, si possible, le mettre en sourdine et l'enregistrer.Comment bloquer les appels dans Android

+0

Je pense qu'il est possible de bloquer un appel entrant. Essayez ceci: http://stackoverflow.com/questions/7121508/android-taking-complete-control-of-phone-is-it-possible-how/7121586#7121586 –

+0

http://stackoverflow.com/a/5268927/1939564 –

+0

Veuillez ne pas accepter la mauvaise réponse, il pourrait être déroutant pour certains que la réponse acceptée n'est pas la bonne. – ayanami

Répondre

3

Vous pouvez simplement rediriger des numéros spécifiques dans vos contacts vers votre boîte vocale. C'est déjà supporté. Sinon, je suppose que la documentation de 'Contacts' serait un bon point de départ pour commencer à chercher.

5

C'est possible et vous n'avez pas besoin de le coder vous-même.

Réglez simplement le volume de la sonnerie à zéro et la vibration à zéro si incomingNumber est égal à une chaîne vide. Thats it ...

C'est juste fait pour vous avec l'application Nostalk d'Android Market. Faites juste un essai ...

+6

La question n'est pas au sujet d'une telle application, c'est comment bloquer le nombre entrant par programmation + dans votre solution comment saurai-je quel est le nombre? –

+1

Ce n'est pas si difficile ... si vous regardez dans la référence du SDK, vous verrez qu'il y a un onCallStateChangeListener() qui doit être enregistré dans votre application. Une fois cela fait, il vous livrera le callState qui pourrait être l'un de IDLE, RINGING ou OFF_HOOK. En outre, l'auditeur vous livrera le numéro entrant ... C'est le point où votre action se met en place. Incidemment, le SDK ne vous donnera pas vraiment la possibilité de laisser tomber un appel, ces fonctions ne sont PAS publiques, elles sont cachées de telle façon qu'il n'y a aucun moyen d'y accéder. –

64

OMG !!! OUI NOUS POUVONS FAIRE CELA!!! J'allais me tuer après 24 heures d'enquête et de découverte ... Mais j'ai trouvé une solution "fraîche"!

// "cheat" with Java reflection to gain access to TelephonyManager's 
// ITelephony getter 
Class c = Class.forName(tm.getClass().getName()); 
Method m = c.getDeclaredMethod("getITelephony"); 
m.setAccessible(true); 
telephonyService = (ITelephony)m.invoke(tm); 

tous tous tous de centaines de personnes qui veulent développer leur logiciel de contrôle d'appel visite this start point

il y a un projet. et il y a des commentaires importants (et crédits)

brièvement: copier AIDL fichier, ajouter des autorisations de manifester, source de copier-coller pour la gestion de la téléphonie)))

Un peu plus d'informations pour vous. Les commandes AT ne peuvent être envoyées que si vous êtes rooté. Que vous pouvez tuer le processus système et envoyer des commandes, mais vous aurez besoin d'un redémarrage pour permettre à votre téléphone de recevoir et d'envoyer des appels =)))

Je suis très hapy =) Maintenant, mon Shake2MuteCall recevra une mise à jour!

+6

Même si cela fonctionne, il me semble un peu risqué. Votre application peut être interrompue sans préavis lorsque l'API interne change. –

+15

2.3 Pain d'épice brise ce –

+7

le lien est cassé .... –

3

Dans android-N, cette fonctionnalité est incluse. vérifier Number-blocking mise à jour pour Android N

Android N prend désormais en charge le numéro de blocage dans la plate-forme et fournit une API cadre pour permettre aux fournisseurs de services à maintenir une liste numéro bloqué. L'application SMS par défaut, l'application de téléphone par défaut et les applications du fournisseur peuvent lire et écrire dans la liste des numéros bloqués. La liste n'est pas accessible à l'autre application.

avantage de sont:

  1. Numéros bloqués sur les appels sont également bloqués sur les textes
  2. numéros bloqués peuvent persister des réinitialisations et périphériques via le sauvegarde & fonctionnalité de restauration
  3. applications multiples peuvent utiliser la même liste de numéros bloqués

Pour plus d'informations ation, voir android.provider.BlockedNumberContract

Mettre à jour un projet existant.

Pour compiler votre application contre la plate-forme Android N, vous devez utiliser le Java 8 Developer Kit (JDK 8), et afin d'utiliser certains outils avec Android Studio 2.1, vous devez installer le environnement d'exécution Java 8 (JRE 8).

Ouvrez le fichier build.gradle pour votre module et mettre à jour les valeurs comme suit:

android { 
    compileSdkVersion 'android-N' 
    buildToolsVersion 24.0.0 rc1 
    ... 

    defaultConfig { 
    minSdkVersion 'N' 
    targetSdkVersion 'N' 
    ... 
    } 
    ... 
} 
+0

Les liens de ce message ne sont pas valides! Tous les deux obtiennent 404 pas trouvé! – hadilq

+2

ce sont des liens de https://developer.android.com site officiel –

+0

À partir de ce commentaire, vous pouvez afficher les liens ici: https://developer.android.com/about/versions/nougat/android-7.0.html# blocage des nombres https://developer.android.com/reference/android/provider/BlockedNumberContract.html Le filtrage des appels a également été jugé pertinent: https://developer.android.com/about/versions/nougat/android-7.0.html#call_screening – jcmcbeth