How can I get the country (or its ISO code)?
Solution 1:
Try this:
TelephonyManager tm = (TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE);
String countryCode = tm.getSimCountryIso();
Solution 2:
There are always huge discussions about this, and I never understand why developers and companies go for the complex way. The language selected by the user, means the language he/she wants to see always in his/her phone. They don't intend to have apps in a different language than others or the system.
The choice is very straight forward: Use Locale (to get the language the user selected as preferred), or make your best to piss them off showing them information in a language they already said they don't want to see things in.
To get the country code use:
Locale.getDefault().getCountry();
Solution 3:
Use:
TelephonyManager tm = (TelephonyManager)getSystemService(getApplicationContext().TELEPHONY_SERVICE);
String countryCode = tm.getNetworkCountryIso();
It is better than getSimCountryIso
because getSimCountryIso
depends on the operator to burn the country ISO into the SIM and it also supports CDMA networks.