2013-06-29 17 views
5

Istnieje wiele aplikacji blokujących połączenia dla urządzeń mobilnych, takich jak blokowanie połączeń NQ. Ale w tych aplikacjach, jeśli dodamy numer do czarnej listy, rozmówca usłyszy "Zajęty ton". Również rozmówca słyszy "Dźwięk dzwonka" przez ułamek sekundy. Oznacza to, że wygląda na to, że celowo odrzucamy rozmowę.Jak sprawić, by numer był nieosiągalny (podobnie jak blokada połączeń)?

Teraz próbuję opracować aplikację blokującą połączenia, która może wysłać "Not Reachable Tone" zamiast "Busy Tone" ... ??

Na przykład, zadzwoń na komórkę z innego numeru, gdy dzwoni, spróbuj zmienić tryb na "Tryb samolotowy". Usłyszysz "Nieosiągalny dźwięk". [Możliwe w niektórych urządzeniach z Androidem, długo naciśnij przycisk zasilania i aktywuj "Tryb samolotowy", gdy telefon dzwoni.]

Odpowiedz

2

Możesz spróbować zaimplementować PhoneStateListener, a kiedy otrzymasz połączenie, porównasz go z tablicą liczb, jeśli jest to zabronione, przełączysz się na tryb airplaine. Coś takiego:

case TelephonyManager.CALL_STATE_RINGING: // incoming call 
{ 
    for (int i = 0; i < forbiddenNumber.size; i++) { 
     if (incomingNumber.equals(forbiddenNumber[i])) { 
      // read the airplane mode setting 
      boolean isEnabled = Settings.System.getInt(
        getContentResolver(), 
        Settings.System.AIRPLANE_MODE_ON, 0) == 1; 

      // toggle airplane mode 
      Settings.System.putInt(getContentResolver(), 
        Settings.System.AIRPLANE_MODE_ON, isEnabled ? 0 
          : 1); 

      // Post an intent to reload 
      Intent intent = new Intent(
        Intent.ACTION_AIRPLANE_MODE_CHANGED); 
      intent.putExtra("state", !isEnabled); 
      sendBroadcast(intent); 

     } 
    } 

Nie zapomnij gość WRITE_SETTINGS

5

Sygnał "Nieosiągalny" nie jest wysyłany przez telefon. Zamiast tego jest wysyłany przez Twojego operatora.

Gdy twój numer jest nieosiągalny, dosłownie oznacza, że ​​wieża celnicza nie może do ciebie dotrzeć. Kiedy ktoś cię woła, wieża próbuje cię znaleźć, a jeśli nie, wysyła sygnał "nieosiągalny" w dół. Nie możesz go sfałszować, a zamiast tego wysłać go z urządzenia.

3

Ponieważ nie możesz tego zrobić, jak wskazuje Raghav, Twoim następnym prawdopodobnym kierunkiem będzie sfałszowanie tych tonów sterujących DTMF, np. sieć zajęta, numer telefonu odłączony, itp.

Wkrótce przekonasz się, że twoja aplikacja też nie może tego zrobić ... nie może "podrobić" tonów DTMF w górę linii - ani przed odebraniem połączenia (ponieważ nie jesteś firmą telefoniczną), ani po otrzymaniu odpowiedzi, która przez wielu uważana jest za niedopatrzenie przez google-androida. Wiele postów tutaj o obu.

Tak, oczywiście możemy ręcznie wpisać DTMF (lub nie możemy wywoływać rozszerzeń, ponumerować numerów kont itp.) Jest to po prostu, że aplikacja nie może tego zrobić automagicznie ... ku uciążliwości wielu programistów PBX. Niestety, to niefortunne dla nas wszystkich ...