联络号码格式的差异
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
我正在开发一个短信拦截器,我需要在数据库中保存联系人号码并将它们与短信发件人进行比较。我的 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