android - codigos - iso 3166-1 excel
¿Cómo obtener el país(o su código ISO)? (8)
¿Cuál es la mejor manera de obtener el código de país? Por el momento, sé que hay dos formas de obtenerlo por TelephonyManager y otro de Locale, que es la otra forma mejor y más única de encontrar el código de país en Android.
Creo que ip es la mejor manera porque te dará el país donde está el teléfono en el momento,
Si lo haces por
Locale.getDefault().getCountry();,
tienes el país donde el usuario selecciona el país para que puedas haber seleccionado Inglaterra, y puedes estar en España y tal vez necesites saber dónde está él en el momento
Ejemplo: imagina que tu aplicación solo puede comprar algo en Inglaterra, el usuario es de España pero está de vacaciones en Inglaterra y quiere comprar tu producto ... si usas
Locale.getDefault().getCountry();
ese usuario no podrá comprar su producto, así que la ip es la mejor manera, creo
Hay un excelente artículo de Reto Meier: http://android-developers.blogspot.com/2011/06/deep-dive-into-location.html
Describe diferentes técnicas para obtener la ubicación de un dispositivo Android, incluido el código fuente. Luego, cuando tiene una ubicación, es fácil obtener un país para ello: el uso puede usar un servicio web-service o una base de datos fuera de línea.
Lo resolví por dirección IP. Puede obtener la dirección IP de su teléfono. Si está utilizando wifi, la dirección IP del punto de acceso wifi o IP de su servidor de Mobile Service Provide, de modo que desde esa IP puede enviar a un servicio web o algo para rastrear el país de esa dirección IP, hay algunas fuentes disponibles en Internet. que proporciona el país de IP aquí es el ejemplo http://whatismyipaddress.com/ip-lookup .
Prueba esto,
TelephonyManager tm = (TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE);
String countryCode = tm.getSimCountryIso();
Puede usar este código para obtener ISO2: Locale.getDefault().getCountry()
Y esto para obtener ISO3: Locale.getDefault().getISO3Country()
Espero que esto ayude
Sé que es una pregunta muy antigua, pero creo que esto ayudará a algunos desarrolladores:
Es muy difícil encontrar el país sin GPS y Google Services (China). TelephonyManager
no funcionará si no hay SIM en su teléfono.
Y Locale
no funcionará si un usuario en China establece su idioma como inglés (el país que recibirá será EE. UU. O RU).
Si su aplicación requiere conexión a Internet, entonces hay una opción. Podrías usar esta API llamada ip-api.com/json . Por favor revisa la documentation primero si planeas usar esto
Hay otras API como esta api freegeoip
Siempre hay grandes discusiones al respecto, y nunca entiendo por qué los desarrolladores y las empresas buscan el camino complejo. El idioma seleccionado por el usuario significa el idioma que desea ver siempre en su teléfono. No tienen la intención de tener aplicaciones en un idioma diferente que otros o el sistema.
La elección es muy directa: use la configuración regional (para obtener el idioma que el usuario seleccionó como preferido ), o haga lo posible para molestarlos mostrándoles información en un idioma en el que ya dijeron que no quieren ver cosas.
Para obtener el código de país, use:
Locale.getDefault().getCountry();
TelephonyManager tm = (TelephonyManager)getSystemService(getApplicationContext().TELEPHONY_SERVICE);
String countryCode = tm.getNetworkCountryIso();
Es mejor que getSimCountryIso
porque getSimCountryIso
depende del operador para grabar el país iso en la SIM y también es compatible con redes CDMA.