Подтвердить что ты не робот

Как получить страну (или ее код ISO)?

Каков наилучший способ получить код страны? На данный момент я знаю два способа получить TelephonyManager, а другой - Locale, который является лучшим и уникальным способом найти код страны в android.

4b9b3361

Ответ 1

Я решил его по IP-адресу. Вы можете получить IP-адрес своего телефона. Если вы используете Wi-Fi, тогда это будет IP-адрес точки доступа Wi-Fi или IP вашего сервера поддержки мобильных услуг, поэтому с этого IP-адреса, который вы можете отправить на веб-службу, или что-то, чтобы отслеживать страну этого IP-адреса, есть некоторые источники (база данных), доступные в Интернете который предоставляет страну IP здесь, является примером http://whatismyipaddress.com/ip-lookup.

Ответ 2

Попробуйте это,

TelephonyManager tm = (TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE);
      String countryCode = tm.getSimCountryIso();

Ответ 3

Об этом всегда говорят огромные дискуссии, и я никогда не понимаю, почему разработчики и компании идут на сложный путь. Язык, выбранный пользователем, означает язык, который он/она хочет видеть всегда на своем телефоне. Они не предназначены для приложений на другом языке, чем другие или системы.

Выбор очень прямолинейный: используйте Locale (чтобы выбрать язык , выбранный пользователем как предпочтительный), или сделайте все возможное, чтобы вымолить их, показывая им информацию на языке, на котором они уже сказали, что они не Не хочу видеть вещи.

Чтобы использовать код страны:

Locale.getDefault().getCountry();

Ответ 4

            TelephonyManager tm = (TelephonyManager)getSystemService(getApplicationContext().TELEPHONY_SERVICE);
          String countryCode = tm.getNetworkCountryIso();

Это лучше, чем getSimCountryIso, потому что getSimCountryIso зависит от оператора, чтобы записать страну iso на SIM-карте, а также поддерживает сети CDMA.

Ответ 5

Я думаю, что ip - лучший способ, потому что он даст вам страну, в которой телефон находится на моменте,

Если вы сделаете это с помощью

    Locale.getDefault().getCountry();,

у вас есть страна, в которой пользователь выбирает страну, чтобы вы могли выбрать Англию, и вы можете быть в Испании, и, возможно, вам нужно знать, где он находится на моменте

Пример: представьте, что ваше приложение может купить что-то ТОЛЬКО в Англии, пользователь из Испании, но он в отпуске в Англии, и он хочет купить ваш продукт... если вы используете

    Locale.getDefault().getCountry(); 

что пользователь не сможет купить ваш продукт, поэтому ip - лучший способ, я думаю

Ответ 6

Есть замечательная статья Рето Мейера: http://android-developers.blogspot.com/2011/06/deep-dive-into-location.html

В нем описываются различные методы получения местоположения устройства Android, включая исходный код. Затем, когда у вас есть местоположение, легко получить страну для этого - использование может использовать онлайн веб-сервис или автономную базу данных

Ответ 7

Вы можете использовать этот код для получения ISO2: Locale.getDefault().getCountry()

И чтобы получить ISO3: Locale.getDefault().getISO3Country()

Надеюсь, что это поможет

Ответ 8

Я знаю, что это очень старый вопрос, но я думаю, что это поможет некоторым разработчикам:

Очень сложно найти страну без GPS и Google Services (Китай). TelephonyManager не будет работать, если на вашем телефоне нет SIM-карты.

И Locale не будет работать, если пользователь в Китае установит свой язык как английский (страна, которую вы получите, будет США или Великобритания).

Если вашему приложению требуется подключение к Интернету, есть опция. Вы можете использовать этот API под названием ip-api. Пожалуйста, пройдите там документация, если вы планируете использовать этот

Существуют и другие API, подобные freegeoip api