2017-09-13 3 views
1

Je peux détecter les appels entrants dans Android mais le problème est que je veux savoir le code de pays de ce numéro de téléphone afin que je puisse analyser si c'est un national ou numéro international. Je sais libphonenumber mais il a besoin de connaître le code de région avant la main pour obtenir le code du pays comme le montre l'exempleobtenir le nom du pays et le code de pays d'un numéro de téléphone donné

String swissNumberStr = "044 668 18 00"; 
PhoneNumberUtil phoneUtil = PhoneNumberUtil.getInstance(); 
try { 
    PhoneNumber swissNumberProto = phoneUtil.parse(swissNumberStr, "CH"); 
} catch (NumberParseException e) { 
    System.err.println("NumberParseException was thrown: " + e.toString()); 
} 

il sait déjà mettre "CH" comme paramètre. mais nous ne savons pas si le nombre doit nous connaître alors comment nous pouvons analyser ce nombre.

Répondre

1

Tant que ce n'est pas un numéro régional (auquel cas il est juste un numéro simple et pas lib dans ce monde pourrait déterminer où il est de) vous pouvez spécifier "ZZ" ou null pour le deuxième paramètre de parse.

C'est ce que l'documentation dit:

région

que nous attendons le nombre provenir. Ceci est uniquement utilisé si le nombre analysé n'est pas écrit au format international. Le country_code pour le numéro dans ce cas serait stocké comme celui de la région par défaut fournie. Si le numéro est garanti pour commencer avec un '+' suivi du code d'appel du pays, alors "ZZ" ou null peut être fourni .

Une fois que vous où en mesure de créer un instace de PhoneNumber vous pouvez simplement appeler getRegionCodeForNumber comme indiqué ci-dessous.

String swissNumberStr = "044 668 18 00"; 
PhoneNumberUtil phoneUtil = PhoneNumberUtil.getInstance(); 
try { 
    PhoneNumber numberProto = phoneUtil.parse(swissNumberStr, "ZZ"); 
    System.out.println(phoneUtil.getRegionCodeForNumber(numberProto)); 
} catch (NumberParseException e) { 
    System.err.println("NumberParseException was thrown: " + e.toString()); 
} 
+0

, mais il n'y a pas certitude que le numéro commence par « + », il peut être 0321774444 ou 92321774444 ou 0092321774444 –

+0

soit le numéro commence par 00 ou +, ou si vous connaissez le pays en premier lieu. Je ne pense pas que vous pouvez créer une instance PhoneNumber significative autrement. –