Использование LibPhoneNumber google lib в Android - PullRequest
13 голосов
/ 27 января 2011

Библиотека libphonenumber не работает на Android, и исключение говорит: «Вызвано: java.lang.UnsupportedOperationException: флаг CANON_EQ не поддерживается» *

В описании на веб-странице написаночто библиотека предназначена для "смартфонов", но Android не поддерживает флаг CANON_EQ reg_ex ..

Я что-то упустил?

Ответы [ 8 ]

20 голосов
/ 07 ноября 2015

Если вы используете Android studio, используйте

compile 'com.googlecode.libphonenumber:libphonenumber:8.4.2'

Если вы хотите загрузить последнюю версию файла JAR, перейдите на

http://mvnrepository.com/artifact/com.googlecode.libphonenumber/libphonenumber

7 голосов
/ 28 января 2011

Пожалуйста, попробуйте использовать libphonenumber-2.5.1.jar со страницы загрузки:

http://code.google.com/p/libphonenumber/downloads/list

JAR из проекта Right-Number работает, потому что они используют libphonenumber-2.4.jar. Флаг CANON_EQ был введен в версии 2.5, но теперь удален из 2.5.1 для совместимости с Android, пока он не поддерживает флаг.

6 голосов
/ 07 августа 2014

Привет Пожалуйста, используйте эту функцию, чтобы передать номер телефона и код страны, как Индия 91

public static String parseContact(String contact, String countrycode) {
    PhoneNumber phoneNumber = null;
    PhoneNumberUtil phoneNumberUtil = PhoneNumberUtil.getInstance();
    String finalNumber = null;
    String isoCode = phoneNumberUtil.getRegionCodeForCountryCode(Integer.parseInt(countrycode));
    boolean isValid = false;
    PhoneNumberType isMobile = null;
    try {
        phoneNumber = phoneNumberUtil.parse(contact, isoCode);
        isValid = phoneNumberUtil.isValidNumber(phoneNumber);
        isMobile = phoneNumberUtil.getNumberType(phoneNumber);

    } catch (NumberParseException e) {
        e.printStackTrace();
    } catch (NullPointerException e) {
        e.printStackTrace();
    }


    if (isValid
            && (PhoneNumberType.MOBILE == isMobile || PhoneNumberType.FIXED_LINE_OR_MOBILE == isMobile)) {
        finalNumber = phoneNumberUtil.format(phoneNumber,
                PhoneNumberFormat.E164).substring(1);
    }

    return finalNumber;
}
2 голосов
/ 23 сентября 2016

compile 'com.googlecode.libphonenumber: libphonenumber: 7.1.1'

Используйте эту зависимость в своем gradle.

отметьте https://github.com/googlei18n/libphonenumber

1 голос
/ 11 февраля 2011

Новая версия libphonenumber http://code.google.com/p/libphonenumber/ скомпилирована для Java 1.5 и теперь будет работать на старых системах Android.

Предыдущие версии были скомпилированы для Java 1.6, но вы могли бы перекомпилировать длялюбая версия с использованием предоставленного исходного кода.

1 голос
/ 28 января 2011

Отправить вопрос по адресу:

http://code.google.com/p/libphonenumber/issues/list

У меня была похожая проблема с последней ревизией, и они очень быстро ответили на мою проблему.Это определенно только обнаруженная ошибка, и вы должны сообщить о ней, если хотите, чтобы она была исправлена.Им потребовалось 10 минут, чтобы подтвердить мою проблему, и 15 минут после того, как они сказали, что к ней готов патч.

Баночка с Right-Number - это просто старая версия.

1 голос
/ 27 января 2011

Я сам боролся с точно таким же вопросом и смог решить его, используя следующую версию:

http://code.google.com/p/right-number/source/browse/trunk/RightNumber/libs/libphonenumber.jar

Эта версия взята из проекта Right-Number , целью которого является создание пользовательского интерфейса для работы с форматированием телефонных номеров на Android.

Я использовал его в своем проекте, и он отлично работает.

0 голосов
/ 03 февраля 2011

Временно попробуйте версию 2.5.1 на http://code.google.com/p/libphonenumber/downloads, поскольку она содержит гораздо более новые метаданные.

Через несколько недель будет больше обновлений.

...