Je pense que je suis confronté à un paradoxe ici.Traiter les formats de numéros de téléphone
Ce que je suis en train de faire est quand je reçois/faire un appel, je le numéro, donc je dois savoir si son un numéro international, si son un numéro local, etc.
Le problème est:
- pour moi de savoir si un nombre est international, je dois analyser et vérifier sa longueur, mais la longueur diffère d'un pays à, donc, dois-je faire une méthode qui analyse et reconnaît pour chaque pays? (Non fonctionnel à mon avis); Pour moi de savoir si c'est un numéro local, j'ai besoin de l'indicatif régional, donc je dois faire la même chose, analyser le nombre et vérifier la longueur, obtenir les premiers chiffres en fonction de la longueur du code de zone;
Il est difficile de trouver la solution pour cela. La bibliothèque libphonenumber offre beaucoup de classes utiles, mais celle que je pensais pouvoir m'aider m'a amené à un autre paradoxe. La méthode phoneUtil.parse (number, countryAcronym) renvoie le numéro avec son indicatif de pays, mais ce qu'il fait, c'est que si je passe le numéro avec l'acronyme "US", il renvoie le numéro avec le code de pays '1', Maintenant, si je change l'acronyme de "BR", il change le nombre et renvoie "55" qui est le code de pays pour le Brésil. Donc, de toute façon, j'ai besoin de l'acronyme du pays basé sur le nombre que je reçois.
EX:
numberReturned = phoneUtil.parse(phoneNumber, "US");
phoneUtil.format(numberReturned, PhoneNumberFormat.INTERNATIONAL);
Le code ci-dessus, renvoie le numéro avec le code du pays des États-Unis, mais maintenant si je change le « US » à tout autre acronyme de pays, il retournera le même nombre, mais avec le code pays de ce pays.
Je sais que cette lib n'est pas censé deviner de quel pays le numéro est (CE SERAIT BEAUCOUP !!), mais c'est ce dont j'ai besoin.
Cela me rend vraiment fou. J'ai besoin de bons conseils des mages sages de SO.
Si vous s'il vous plaît pourrait m'aider avec une bonne décision, je serais tellement merci.
Merci.
PS: Si vous utilisez déjà libphonenumber et a plus d'expérience avec cela, s'il vous plaît me guider sur quelle classe à utiliser, s'il est capable de résoudre ce problème. =)
Oui. Mais le problème est que je dois soutenir presque tous les pays. Cela va être dur, beaucoup de recherche et de réflexion pour arriver à une conclusion simple et sage. Une bonne approche consiste à obtenir le pays le nombre est, est le seul moyen de le faire en analysant le nombre? Merci quand même. – rogcg
À peu près, oui. Vous devrez vérifier si la chaîne du numéro de téléphone commence par +, ou quel que soit le préfixe approprié pour composer internationalement pour le pays dans lequel vous vous trouvez - si ce n'est pas le cas, alors c'est national. Le téléphone sait quels chiffres envoyer à la place de ce signe +, mais je ne sais pas comment le récupérer dans votre code. –