Android контакты неформатированный и форматированный номер

Samsung Galaxy S6 Edge, Android 6.0.1, Microsoft Exchange Active Sync.

В моем приложении я перечисляю все телефонные номера человека. Для некоторых людей номер мобильного телефона указан дважды, один с (ручным) форматированием, которое я использую, когда я ввожу номер в Outlook, а другой с удаленным форматированием.

Введено и отображается правильно: 010-123 45 67 Также для некоторых людей мое приложение получает: 0101234567. Это то, что отображается, если я отправляю SMS этому человеку, и Android, кажется, запоминает этот номер и сохраняет его невидимо в адресной книге.

Если я ищу человека как в контактах Outlook, так и в телефонных контактах, отображается только отформатированный номер.

Любая подсказка, как удалить неформатированные числа?


person Community    schedule 07.04.2017    source источник
comment
Эта ссылка не работала   -  person    schedule 07.04.2017
comment
Быстрое и грязное решение: String stripped = stripSeparators(phoneNumber); if (stripped.equals(phoneNumber) == false) theNumbers.add(phoneNumber); Однако должен быть лучший способ, потому что в моей адресной книге могут быть неформатированные номера, и если это так, они будут исключены.   -  person    schedule 07.04.2017
comment
developer.android.com/reference/android/telephony/ Посмотрите.   -  person Dhaval Patel    schedule 07.04.2017


Ответы (1)


Решил это, хотя я уверен, что есть лучший способ.

phoneNumber = phoneCursor.getString(phoneCursor.getColumnIndex(NUMBER));
String stripped = stripSeparators(phoneNumber);
int count = theNumbers.size();
boolean present = false;
for (int i = 0; i < count; i++)
{
  if (stripSeparators(theNumbers.get(i)).equals(stripped) == true)
  {
    present = true;
    break;
  }
}
if (present == false)
  theNumbers.add(phoneNumber);
person Community    schedule 07.04.2017
comment
Это работает только в том случае, если числа идут в определенном порядке. Я решил это, сначала собрав все числа, а затем найдя дубликаты. Не красиво. - person ; 07.04.2017