2015-08-30 1 views
2

Ceci est mon code qui reçoivent le code du pays par l'entrée (dans onCreate() méthode) gens. J'ai trouvé la réponse en utilisant TelephonyManager. Mais je suis confus de la façon de mettre en place pour ma variable countryCodeEdt pour obtenir la valeur de cette méthode:Comment effectuer une pré-sélectionner le code de pays automatiquement dans Android

public static String getUserCountry(Context context) { 
    try { 
     final TelephonyManager tm = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE); 
     final String simCountry = tm.getSimCountryIso(); 
     if (simCountry != null && simCountry.length() == 2) { // SIM country code is available 
      return simCountry.toLowerCase(Locale.US); 
     } 
     else if (tm.getPhoneType() != TelephonyManager.PHONE_TYPE_CDMA) { // device is not 3G (would be unreliable) 
      String networkCountry = tm.getNetworkCountryIso(); 
      if (networkCountry != null && networkCountry.length() == 2) { // network country code is available 
       return networkCountry.toLowerCase(Locale.US); 
      } 
     } 
    } 
    catch (Exception e) { } 
    return null; 
} 

que quelqu'un peut me donner quelques suggestions? Merci d'avance.

Répondre

1

Placez simplement la méthode getUserCountry à votre MainActivity, définir une variable String et appelez -

String countryCode = getUserCountry(getApplicationContext()); 

Maintenant, vous pouvez l'utiliser pour votre TextView -

if (countryCode != null) { 
    countryCodeEdt.setText(countryName); 
} else { 
//some error? 
} 

Faites attention que getUserCountry retourne les le code du pays, pas le nom du pays ie GB et pas Great Grande-Bretagne
Vous devez également gérer le cas où la carte SIM n'est pas présentée à l'intérieur de l'appareil.

+0

Voulez-vous dire define 'countryCode' dans la méthode' afterTextChanged (Editable s) '? – DinhNgocHien

+0

Non Définissez-le comme une méthode séparée, comme 'onCreate', 'onResume' et ainsi de suite. – TDG

+0

ok Je l'ai eu, cependant, 'countryCode' retourne toujours' null'. Je ne savais pas d'où venait l'erreur, car 'getUserCountry' renvoyait' null' ou à cause de mon périphérique (j'ai utilisé genymotion comme un périphérique testé) – DinhNgocHien