2012-07-18 68 views
2

我想知道是否有方法可以過濾(阻止)Android上的來電(考慮2.1和更高版本)。我發現使用反射的解決方案,但它似乎不是非常乾淨和可靠的解決方案。有沒有任何標準或谷歌推薦的方式來做到這一點?如何過濾呼入電話(黑名單) - 無反射

更新:任何人?

回答

2

使用下面的廣播接收器來獲取來電號碼,並將其與在你創建的過濾器列表中的號碼

@Override 
public void onReceive(Context context, Intent intent) { 
    Bundle extras = intent.getExtras(); 
    if (extras != null) { 
     String state = extras.getString(TelephonyManager.EXTRA_STATE); 
     Log.w("DEBUG", state); 
     if (state.equals(TelephonyManager.EXTRA_STATE_RINGING)) { 
      String phoneNumber = extras 
        .getString(TelephonyManager.EXTRA_INCOMING_NUMBER); 
      Toast.makeText(context, phoneNumber, 2000).show(); 
      Log.w("DEBUG", phoneNumber); 
     } 
    } 
} 

希望這將有助於進行比較。您需要通過應用程序的用戶界面在黑名單中創建一個數字列表。

+1

1)在您的應用程序標籤中也使用清單文件中的以下內容。 <接收機機器人: 「BroadCastClassActivity」 名稱=> <意圖濾波器> <操作機器人:名稱= 「android.intent.action.PHONE_STATE」> 2)並添加權限:「android.permission.READ_PHONE_STATE」 – spacetime 2012-07-18 06:59:36

+0

謝謝,這是目前爲止的標準方式。但是現在我需要阻止那個呼叫,如果它在黑名單上 - 這是不必要的反射通常會觸發的部分。 – 2012-07-18 07:19:02

+0

考慮這個流程:1)應用程序確實有接口來添加您需要阻止的數字2)存儲那些數組列表中的數字3)一旦有任何呼叫傳入,我們就得到這個數字,對吧? 4)然後將該數字與我們之前存儲的數組列表中的數字進行比較5)如果接收到的數字在數組列表中,則斷開連接,否則繼續進行呼叫:) – spacetime 2012-07-18 07:30:18