Android:如何以编程方式检测私人号码

Bao*_* Le 11 android telephony phone-call telephonymanager

我使用BroadcastReceiver拦截Android手机上的来电,如下所示

tm = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
Bundle bundle = intent.getExtras();
String number = bundle.getString(TelephonyManager.EXTRA_INCOMING_NUMBER);
Run Code Online (Sandbox Code Playgroud)

在"私人号码"的情况下,我在两个设备上进行了测试,它在HTC Wildfire上显示数字为-1,在Galaxy S上显示为-2.我检查过android.telephony.PhoneNumberUtils但它无法帮助我.

是否有功能或通用方法来检测Android手机上的私人号码?

Cam*_*gny 12

你几乎回答了自己的问题.私人号码以-1或-2的形式发送到手机.在我的应用程序中,我检查一个小于0的整数值,如果是,我将其视为私人号码.这听起来像你想要做的.

我希望我的想法很有帮助.

  • @BaoLe这个工作的原因可以看出这里的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表示公用电话号码 (2认同)