2011-01-10 45 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