我正在开发一个短信拦截器,我需要在其中保存数据库中的联系人号码并将其与短信发送者进行比较。我只在我的Android手机上安装了默认短信应用程序。但是从以下代码中选择的联系号码格式有所不同:
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”,没有国家代码,但是SMS广播接收器将国家/地区代码添加到“+ 92331xxxxxxx”等号码。
我的问题(a)是SMS接收器使用不同格式然后保存在我的联系人列表中的原因(b)如何比较我的这些数字短信广播接收器。
答案 0 :(得分:1)
结帐PhoneNumberUtils。您需要让O / S帮助您,因为它可以是国际号码。
使用String incomingNumber = PhoneNumberUtils.formatNumber(incomingNumber,defaultCountryIso);
两个数字,然后比较它们 要比较你这样做:
boolean SameNumber= PhoneNumberUtils.compare(phoneNumber, otherPhoneNumber)
//if true, numbers are the same