Как заставить PhoneNumberUtil распознавать массивы? - PullRequest
0 голосов
/ 28 апреля 2018

У меня есть список контактов в рециркуляторе с телефонными номерами. Я хочу, чтобы PhoneNumberUtil (libphonenumber) сообщал мне, звонит ли один из этих контактов, сравнивая входящий номер с номерами в списке. На данный момент это работает только с контактами, которые имеют только один номер телефона. Я хочу, чтобы он работал с контактами, которые тоже имеют несколько номеров.

Это часть моего кода:

String listNumbers = listItem.getNumbers().toString();

                System.out.println(listNumbers);

                PhoneNumberUtil pnu = PhoneNumberUtil.getInstance();

                PhoneNumberUtil.MatchType mt = pnu.isNumberMatch(listNumbers, number);
                if (mt == PhoneNumberUtil.MatchType.NSN_MATCH || mt == PhoneNumberUtil.MatchType.SHORT_NSN_MATCH || mt == PhoneNumberUtil.MatchType.EXACT_MATCH) {
                    if (selected) {
                        NotificationManager notificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
                        if (notificationManager != null) {
                            notificationManager.setInterruptionFilter(NotificationManager.INTERRUPTION_FILTER_NONE);
                        }
                    }
                }

Вот как выглядит мой System Out:

I/System.out: [029-426-9301, 029-426-9302, 029-426-9303]
I/System.out: [044-070-2586]
I/System.out: [225-649-86, 225-649-86]
I/System.out: [078-885-21174]

Что я пробовал:

Я попытался отформатировать строковые массивы так, чтобы запятые были заменены квадратными скобками, например: [029-426-9301] [029-426-9302] [029-426-9303]. Однако это не имело никакого значения, цифры все еще не были распознаны.

Буду признателен за некоторые предложения.

1 Ответ

0 голосов
/ 28 апреля 2018

Вы можете сделать что-то вроде этого:

boolean isMatch = false;
String matchedNumber = null;

for (String currentNumber : listItem.getNumbers ()) {
    PhoneNumberUtil.MatchType mt = pnu.isNumberMatch (currentNumber, number);
    if (mt == PhoneNumberUtil.MatchType.NSN_MATCH || mt == PhoneNumberUtil.MatchType.SHORT_NSN_MATCH || mt == PhoneNumberUtil.MatchType.EXACT_MATCH) {
        isMatch = true;
        matchedNumber = currentNumber;

        break;
    }
}

if (isMatch) {
    // your business logic
}
...