Формат номера контакта
Я разрабатываю блокировщик смс, для которого мне нужно сохранить контактные номера в БД и сравнить их с отправителем SMS. На моем телефоне с Android установлено только стандартное SMS-приложение. Но есть разница в формате контактного номера, как указано в следующем коде:
Intent intent = new Intent(Intent.ACTION_PICK, ContactsContract.Contacts.CONTENT_URI);
intent.setType(ContactsContract.CommonDataKinds.Phone.CONTENT_TYPE);
startActivityForResult(intent, PICK_CONTACT);
и когда я получаю SMS с использованием широковещательного приемника (см. следующий сегмент кода):
SmsMessage currentMessage = SmsMessage.createFromPdu((byte[]) pdusObj[i]);
String phoneNumber = currentMessage.getDisplayOriginatingAddress();
String number = phoneNumber;
String message = currentMessage.getDisplayMessageBody();
Формат номера телефона # в моем списке контактов похож на "033-xxxx-xxxx" без кода страны, но получатель SMS-трансляции добавляет код страны к номеру, например "+92331xxxxxxx".
Мой вопрос (а) заключается в том, почему получатель SMS использует другой формат, чем тот, который сохранен в моих списках контактов, и (б) как мне сравнить эти числа в приемнике SMS-вещания.
1 ответ
Проверьте PhoneNumberUtils. Вам нужно позволить O/S помочь вам, потому что это может быть международный номер.
использование String incomingNumber = PhoneNumberUtils.formatNumber(incomingNumber,defaultCountryIso);
на обоих числах, затем сравните их.
Для сравнения вы делаете это:
boolean SameNumber= PhoneNumberUtils.compare(phoneNumber, otherPhoneNumber)
//if true, numbers are the same