Je voudrais créer une application que je peux être en mesure de définir différents numéros de téléphone dans un bloc ou autoriser la liste. Est-il possible de bloquer ou d'autoriser seulement certains numéros de téléphone et si oui, comment pourrais-je faire cela. Merci d'avance, Jonathan.Bloquer les appels téléphoniques entrants et sortants?
Répondre
Il semble que vous deviez créer un service avec un PhoneStateListener enregistré qui vous permet d'écouter les événements concernant le changement d'état du téléphone. Donc, si quelqu'un vous appelle, vous pouvez attraper cet événement dans votre auditeur et réagir en conséquence. Votre propre PhoneStateListener pourrait ressembler à ceci:
public class CustomPhoneStateListener extends PhoneStateListener {
public void onCallStateChanged(int state, String incomingNumber) {
switch (state) {
case TelephonyManager.CALL_STATE_IDLE:
doSomething();
break;
case TelephonyManager.CALL_STATE_OFFHOOK:
doSomething();
break;
case TelephonyManager.CALL_STATE_RINGING:
if(incomingNumber.equels(blockedNumber)) {
blockNumber();
}
break;
}
}
}
Dans le cas où l'état de téléphone est égale à CALL_STATE_RINGING vous pouvez placer votre logique pour bloquer l'appel entrant si le numéro entrant correspond à un numéro dans votre « Bloqué numéros liste". Pour que tout fonctionne, vous devez enregistrer cet écouteur dans votre service (dans la méthode onCreate et n'oubliez pas de le désinscrire dans onDestroy) et également ajouter une autorisation à votre manifeste Android qui vous permet de lire l'état du téléphone.
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
première chose que créer un recepteur de diffusion: 1) ajouter à manifester
2) le recepteur:
public class CallReciever extends BroadcastReceiver
{
@Override
public void onReceive(Context context, Intent intent)
{
String state = intent.getStringExtra(TelephonyManager.EXTRA_STATE);
ArrayList<String> rejectList=getListFromDb()//you need to implement this method
if (state.equals(TelephonyManager.EXTRA_STATE_RINGING))
{
String num = intent.getStringExtra(TelephonyManager.EXTRA_INCOMING_NUMBER);
if (rejectList.Contains(num))
{
disconnectCall();
}
}
public void disconnectCall(){
try {
String serviceManagerName = "android.os.ServiceManager";
String serviceManagerNativeName = "android.os.ServiceManagerNative";
String telephonyName = "com.android.internal.telephony.ITelephony";
Class<?> telephonyClass;
Class<?> telephonyStubClass;
Class<?> serviceManagerClass;
Class<?> serviceManagerNativeClass;
Method telephonyEndCall;
Object telephonyObject;
Object serviceManagerObject;
telephonyClass = Class.forName(telephonyName);
telephonyStubClass = telephonyClass.getClasses()[0];
serviceManagerClass = Class.forName(serviceManagerName);
serviceManagerNativeClass = Class.forName(serviceManagerNativeName);
Method getService = // getDefaults[29];
serviceManagerClass.getMethod("getService", String.class);
Method tempInterfaceMethod = serviceManagerNativeClass.getMethod("asInterface", IBinder.class);
Binder tmpBinder = new Binder();
tmpBinder.attachInterface(null, "fake");
serviceManagerObject = tempInterfaceMethod.invoke(null, tmpBinder);
IBinder retbinder = (IBinder) getService.invoke(serviceManagerObject, "phone");
Method serviceMethod = telephonyStubClass.getMethod("asInterface", IBinder.class);
telephonyObject = serviceMethod.invoke(null, retbinder);
telephonyEndCall = telephonyClass.getMethod("endCall");
telephonyEndCall.invoke(telephonyObject);
} catch (Exception e) {
e.printStackTrace();
Log.e("GABI",
"FATAL ERROR: could not connect to telephony subsystem");
Log.e("GABI", "Exception object: " + e);
}
}
}
maintenant cela ne fonctionnera une fois que vous avez commencé votre application au moins une fois. (vous pouvez appeler votre application pour démarrer un service au démarrage en utilisant un autre récepteur qui appellera startActivity) les permisions et la déclaration pour elle sont:
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<receiver android:name="com.my.CustomReceiver">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
</intent-filter>
</receiver>
- 1. Détecter les appels téléphoniques entrants
- 2. Bloquer les appels entrants
- 3. Bloquer les SMS entrants/sortants sur Android
- 4. Écoute des appels sortants/entrants
- 5. Adobe Air Mobile (iOS, Android) et les appels téléphoniques entrants
- 6. Comment bloquer les appels entrants dans l'iphone
- 7. Bloquer les appels entrants et les sms en android
- 8. Détecter les SMS entrants et sortants
- 9. Créer une application mobile à l'écoute des appels téléphoniques entrants
- 10. Bloquer les SMS sortants
- 11. bloquer par programmation les appels sortants sur blackberry
- 12. enregistrement/moniteur astérisque appels entrants/sortants sur mp3
- 13. android media player: traiter les appels téléphoniques entrants et lire l'audio en arrière-plan
- 14. Logiciel pour gérer les appels téléphoniques entrants et répondre via sms
- 15. Blackberry: Bloquer les SMS sortants
- 16. Intercepter les appels entrants
- 17. OFF_HOOK STATE n'est jamais appelé pour les appels sortants et entrants
- 18. Appels sortants
- 19. Surveiller les appels Webservice sortants
- 20. Android: Rediriger les appels sortants
- 21. Comment mon PBX SIP peut-il détecter les appels téléphoniques entrants?
- 22. Iptable ne supprime pas les paquets entrants ou sortants
- 23. application de fond dans iOS qui détecte les appels téléphoniques entrants
- 24. Comment identifier l'application par défaut qui accepte les appels téléphoniques entrants dans Android?
- 25. Comment annuler l'enregistrement des appels entrants et des récepteurs d'appels sortants?
- 26. Bloquer les SMS sortants par contentObserver
- 27. mailto: lien équivalent pour les appels téléphoniques?
- 28. Afficher les appels téléphoniques dans SiteMap
- 29. Détecter les appels téléphoniques dans l'iPhone
- 30. Interception d'e-mails entrants/sortants pour Android
contentObserver vous aidera à –
Recieve une émission d'appels et d'utiliser la téléphonie ISDL pour terminer l'appel. La téléphonie isdl contient la méthode d'appel de fin qui vous aidera à mettre fin aux appels. pour un numéro particulier, vous devez vérifier le numéro avec le gestionnaire de téléphonie –