联络号码格式的差异

Difference of Contact No. Format

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

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();

我的联系人列表中phone # 的格式如“033-xxxx-xxxx”,没有国家代码,但短信广播接收器将国家代码添加到号码中,如“+92331xxxxxxx”。

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

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

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

两个数字,然后比较它们。
要进行比较,您可以这样做:

   boolean SameNumber= PhoneNumberUtils.compare(phoneNumber, otherPhoneNumber)
//if true, numbers are the same