Я думаю, что здесь я сталкиваюсь с парадоксом.
То, что я пытаюсь сделать, это когда я получаю / совершаю вызов, у меня есть номер, поэтому мне нужно знать, является ли он международным номером, если это местный номер и т. Д.
Проблема:
- Чтобы я знал, является ли число международным, мне нужно проанализировать его и проверить его длину, но длина отличается от страны к стране, поэтому я должен сделать метод, который анализирует и распознает для каждой страны? (На мой взгляд не функционально);
- Чтобы я знал, является ли это местный номер, мне нужен код города, поэтому я должен сделать то же самое, разобрать номер и проверить длину, получить первые числа на основе длины кода города;
Довольно сложно найти решение для этого. Библиотека libphonenumber предлагает множество полезных классов, но тот, который, как мне показалось, может мне помочь, привел меня к другому парадоксу.
Метод phoneUtil.parse (number, countryAcronym) возвращает номер с кодом страны, но если он передаст номер с аббревиатурой «US», он вернет номер с кодом страны «1», теперь если я изменю акроним на «BR», он изменит номер и вернет «55», то есть код страны для Бразилии. Так или иначе, мне нужна аббревиатура страны, основанная на числе, которое я получаю.
EX:
numberReturned = phoneUtil.parse(phoneNumber, "US");
phoneUtil.format(numberReturned, PhoneNumberFormat.INTERNATIONAL);
Приведенный выше код возвращает номер с кодом страны США, но теперь, если я заменю «США» на любую другую аббревиатуру страны, он вернет тот же номер, но с кодом страны этой страны.
Я знаю, что эта библиотека не должна угадывать, из какой страны число (ЭТО БУДЕТ УДИВИТЕЛЬНО !!) , но это то, что мне нужно.
Это действительно сводит меня с ума. Мне нужны хорошие советы от мудрых магов СО.
Если бы вы могли помочь мне с правильным решением, я был бы так благодарен.
Спасибо.
PS: Если вы уже используете libphonenumber и у вас больше опыта с этим, сообщите мне, какой класс использовать, если есть способный решить эту проблему. =)