Использование библиотеки Google LibPhoneNumber в Android

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

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

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


person shaimagz    schedule 27.01.2011    source источник
comment
Большинство функций этой библиотеки доступны с самой платформой Android. Пожалуйста, прочтите разработчик .android.com/reference/android/телефония/   -  person humble_wolf    schedule 10.08.2019


Ответы (8)


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

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

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

person Shaopeng Jia    schedule 28.01.2011

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

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

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

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

person Bala Vishnu    schedule 07.11.2015
comment
7000 методов, это так тяжело %) - person ar-g; 17.02.2016
comment
Да и эта библиотека тоже слишком глючная. Мой клиент расстроился и отказался от этой библиотеки. - person Bala Vishnu; 17.02.2016
comment
стоит отредактировать, чтобы добавить, где находится последняя версия, я думаю, что сейчас 8.4.2 - person Rubber Duck; 09.05.2017
comment
Я использовал компиляцию 'com.googlecode.libphonenumber:libphonenumber:8.8.3' - person Akanksha Rathore; 09.10.2017

Привет. Пожалуйста, используйте эту функцию для передачи номера телефона и кода страны, например Индии 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;
}
person Vijay Rajput    schedule 07.08.2014

скомпилировать 'com.googlecode.libphonenumber:libphonenumber:7.1.1'

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

проверьте этот https://github.com/googlei18n/libphonenumber

person Hamza Zubair    schedule 23.09.2016
comment
Работал! Я попытался загрузить последнюю банку из их репо (libphonenumber-7.7.2), и она продолжала выдавать исключение во время выполнения. С этой старой версией и с импортом через gradle все работает!!!! - person user2924714; 01.11.2016

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

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

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

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

person Roy Sharon    schedule 27.01.2011

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

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

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

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

person Henrik Poulsen    schedule 28.01.2011

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

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

person g1smd    schedule 11.02.2011