2011-01-10 41 views
10

我使用廣播接收器攔截Android手機上的傳入呼叫如下機器人:如何檢測的私人號碼編程

tm = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE); 
Bundle bundle = intent.getExtras(); 
String number = bundle.getString(TelephonyManager.EXTRA_INCOMING_NUMBER); 

在,我在兩個裝置上測試了「私人號碼」的情況下,它顯示了數作爲HTC野火-1和Galaxy S上-2。我檢查了android.telephony.PhoneNumberUtils,但它不能幫助我。

有沒有一種功能或通用的方式來檢測Android手機上的私人號碼?

回答

11

你幾乎回答了你自己的問題。私人號碼作爲-1或-2發送到手機。在我的應用程序中,我檢查一個小於0的整數值,如果是,我將它視爲一個私人號碼。這聽起來像你想要做的。

我希望我的想法很有幫助。

+1

我不確定它適用於所有設備,因爲我找不到任何相關文檔。 –

+0

我同意你的意見。我不知道是否有任何設備打破了這個「小於零」的規則,但現在它似乎適用於我。由於沒有文檔,並且Android設備在其實現方面有很多,所以我會遵循此規則,直到我收到來自用戶的錯誤報告。不是最好的事情,但目前唯一給出的事實。 –

+2

@寶樂這個工程的原因可以看出,這裏的CallLog.java的android源碼是一個鏈接,http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android /4.0.3_r1/android/provider/CallLog.java#269受限制的調用被分配了一個常量,在com.android.internal.telephony.CallerInfo中定義爲-1,用於未知,-2用於專用,-3用於付費電話號碼 – Sojurn