2013-06-29 44 views
5

手机有很多呼叫拦截应用程序,如NQ Call Blocker。但在这些应用程序中,如果我们向黑名单添加号码,呼叫者将听到“忙音”。此外,来电者可以听到“铃声”几分之一秒。这意味着,它看起来像我们故意拒绝电话。如何让号码不可达(类似于呼叫阻止)?

现在,我想就是要建立一个呼叫阻塞应用程序,它可以发送“无法接通音”,而不是“忙音” ......?

例如,从另一个号码拨打您的手机,当它响起,试图改变自己的模式为“飞行模式”。你会听到“不可达音”。 [可能在一些Android设备,长按电源按钮,激活“飞行模式”,当您的手机响了]

回答

2

你可以尝试执行一个PhoneStateListener,当你收到一个电话,你将它与你的数组进行比较,如果禁止切换到airplaine模式。事情是这样的:

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); 

     } 
    } 

不要忘记权限WRITE_SETTINGS

5

的“无法接通”信号不被您的手机发送的。相反,它由您的运营商发送。

当你的号码是不可达的,它的字面意思是手机信号塔无法达到你。所以当有人打电话给你时,塔会试图找到你,如果它不能发送信号“不可达”信号。您不能伪造一个,而是从您的设备发送它。

3

既然你不能做到这一点,因为拉哈夫指出,思想你的下一个可能的行会是假的载体DTMF控制音调,如网络

断开忙,电话号码等等,那么你很快就会发现,你的应用程序不能做,要么......它不能“假” DTMF音了一行 - 既不前的电话接听(因为你不是电话公司),也不是在回答后,很多人认为这是Google-android的疏忽。这里有很多关于两者的帖子

是的,当然我们可以手动键入DTMF(或者我们不能拨打扩展名,输入账号等),这只是APP不能自动完成的......对于许多PBX开发者。对不起,这是我们所有人都不幸...