1

我正在开发一个短信拦截器,我需要将联系人号码保存在数据库中并将它们与短信发件人进行比较。我的安卓手机上只安装了默认的短信应用程序。但是从以下代码中选择的联系号码格式有所不同:

Intent intent = new Intent(Intent.ACTION_PICK, ContactsContract.Contacts.CONTENT_URI);
intent.setType(ContactsContract.CommonDataKinds.Phone.CONTENT_TYPE);
startActivityForResult(intent, PICK_CONTACT);

当我使用广播接收器接收短信时(参见以下代码段):

SmsMessage currentMessage = SmsMessage.createFromPdu((byte[]) pdusObj[i]);
String phoneNumber = currentMessage.getDisplayOriginatingAddress();
String number = phoneNumber;
String message = currentMessage.getDisplayMessageBody();

我的联系人列表中电话号码的格式类似于“033-xxxx-xxxx”,没有国家代码,但短信广播接收器将国家代码添加到“+92331xxxxxxx”这样的号码中。

我的问题(a)是为什么 SMS 接收器使用与保存在我的联系人列表中的格式不同的格式以及(b)我如何在我的 SMS 广播接收器中比较这些数字。

4

1 回答 1

1

查看PhoneNumberUtils。您需要让 O/S 帮助您,因为它可以是国际号码。

利用String incomingNumber = PhoneNumberUtils.formatNumber(incomingNumber,defaultCountryIso);

在这两个数字上,然后比较它们。
要进行比较,请执行以下操作:

   boolean SameNumber= PhoneNumberUtils.compare(phoneNumber, otherPhoneNumber)
//if true, numbers are the same
于 2015-12-13T07:01:34.320 回答