- How can I get my Android device country code without using GPS?
- 10 Answers 10
- Sample code used to check the country is India or not.
- Как я могу получить код страны Android Android без использования GPS?
- ОТВЕТЫ
- Ответ 1
- Ответ 2
- Ответ 3
- Ответ 4
- Ответ 5
- Ответ 6
- Ответ 7
- Ответ 8
- Получение телефонного кода страны с Android
- ОТВЕТЫ
- Ответ 1
- Ответ 2
- Ответ 3
- Ответ 4
- Ответ 5
- Выход, который я получаю, выглядит примерно так:
- 1) Я создал пользовательский адаптер CountryCodesAdapter:
- 2) Теперь макет моей активности, где я показываю счетчик кода страны, следующий:
- 3) java Код операции ниже:
- Несколько дополнительных функций:
- Ответ 6
- Ответ 7
- Ответ 8
- Ответ 9
- Ответ 10
- Get country name from country code
- 5 Answers 5
- Android Locale – Get Locale Name And Country Code
How can I get my Android device country code without using GPS?
An Android mobile actually does know quite well where it is — but is there a way of retrieving the country by something, like a country code or country name?
There isn’t any need to know the exact GPS position — the country code or name is sufficient, and I am using this code:
It gives me the code «US», but my device kept in India. Is there a way to find the device’s current country code without using GPS or a network provider?
Because I am using a tablet.
10 Answers 10
You can simply use this code,
This will return ‘US’ if your current connected network is in the United States. This works without a SIM card even.
You shouldn’t be passing anything in to getCountry() . Remove Locale.getDefault() :
Use the link http://ip-api.com/json. This will provide all the information as JSON. From this JSON content you can get the country easily. This site works using your current IP address. It automatically detects the IP address and sendback details.
This is what I got:
N.B. — As this is a third-party API, do not use it as the primary solution. And also I am not sure whether it’s free or not.
The checked answer has deprecated code. You need to implement this:
I have created a utility function (tested once on a device where I was getting an incorrect country code based on locale).
Here is a complete example. It tries to get the country code from TelephonyManager (from SIM or CDMA devices), and if not available, tries to get it from the local configuration.
Also another idea is to try an API request like in this answer.
References are here and here.
For some devices, if the default language is set different (an Indian can set English (US)) then
will give the wrong value. So this method is not reliable.
Also, getNetworkCountryIso() method of TelephonyManager will not work on devices which don’t have SIM card (Wi-Fi tablets).
If a device doesn’t have a SIM card then we can use the time zone to get the country. For countries like India, this method will work.
Sample code used to check the country is India or not.
Use the below values in your constants file
(Constants.INDIA_TIME_ZONE_ID: «asia/calcutta», Constants.NETWORK_INDIA_CODE :»in»)
And in your activity, add the following code:
If you wish to get the country code without asking for any permission, you can choose a tricky way.
The method simply uses an API to get the country code, and there aren’t any third-party libraries to depend on. We can create one for us.
Here I have used Google Cloud Functions to write an API and it is so effortless.
Step 1: Create a Google Cloud Account, and set up billing (the free tier is enough)
Step 2: Create a cloud function to get the geo location
Copy this basic function to the code editor of index.js:
Also we need to copy the package.json definition:
Step 3: finish, and get the URL similar to: «https://us-central1-geolocation-mods-sdde.cloudfunctions.net/geolocation»
Step 4: parse the JSON response and get the country code
Источник
Как я могу получить код страны Android Android без использования GPS?
Андроид-мобильник действительно хорошо знает, где он находится — но есть ли способ вернуть страну чем-то вроде кода страны или названия страны?
Не нужно знать точное местоположение GPS — достаточно кода страны или названия, и я использую код для этого:
но он дает мне код «США»
но мое устройство хранилось в Индии; есть ли способ найти текущий код страны, не используя GPS или Network Provider. потому что я использую планшет. Спасибо в Advance.
ОТВЕТЫ
Ответ 1
Вы не должны передавать ничего в getCountry() , удалите Locale.getDefault()
String locale = context.getResources().getConfiguration().locale.getCountry();
Ответ 2
Вы можете просто использовать этот код,
Это вернет «США», если ваша текущая подключенная сеть — Соединенные Штаты. Это работает без SIM-карты. Надеюсь, это решит вашу проблему.
Ответ 3
Используйте эту ссылку http://ip-api.com/json, она предоставит всю информацию как json. Из этого JSON вы можете легко получить страну. Этот сайт работает с использованием вашего текущего IP-адреса, он автоматически определяет IP-адрес и детали отправки.
Это то, что я получил.
NB. Поскольку это API сторонних производителей, не используйте его в качестве основного решения. А также не уверен, свободна ли она или нет.
Ответ 4
Проверенный ответ имеет устаревший код. Вам необходимо реализовать это:
Ответ 5
Я создал служебную функцию (протестирован один раз на устройстве, где я получал неправильный код страны в зависимости от локали). Надеюсь, что это поможет. Ссылка: https://github.com/hbb20/CountryCodePickerProject/blob/master/ccp/src/main/java/com/hbb20/CountryCodePicker.java#L1965
Ответ 6
Для некоторых устройств, если язык по умолчанию установлен другой (индиец может установить английский (США)), то
даст неправильное значение. Так что этот метод не надежен
Кроме того, метод getNetworkCountryIso() TelephonyManager не будет работать на устройствах без SIM-карты (планшеты WIFI).
Если на устройстве нет SIM-карты, мы можем использовать часовой пояс, чтобы узнать страну. Для таких стран, как Индия, этот метод будет работать
Пример кода, используемого для проверки страны, Индия или нет (идентификатор часового пояса: Азия /Calcutta)
Ответ 7
Вот полный пример. Попробуйте получить код страны из TelephonyManager (с SIM-карты или устройства CDMA), и, если он недоступен, попробуйте получить его из локальной конфигурации.
Также другая идея состоит в том, чтобы попробовать запрос API, как в этом ответе.
Ответ 8
Не уверен, что решение все еще выполняется, но вот мой:
Источник
Получение телефонного кода страны с Android
Я хотел бы знать, как я могу получить код страны/пользователя из моего приложения для Android Я знаю, что есть lib по имени TelephonyManager, но я не мог найти функцию кода страны
Чтобы я убедился: У меня есть активность, которая просит пользователя ввести свой номер телефона, и я хочу, чтобы код страны был взят с устройства (от его носителя?) Если бы я открыл свое приложение в Нью-Йорке, я бы получил +212 в качестве кода страны и текстовое поле для ввода своего собственного номера
ОТВЕТЫ
Ответ 1
1- Добавить этот массив в файл Strings.xml
2-CopyThis Function К вашему классу
Функция 3-вызова GetCountryZipCode()
4-write Спасибо, Вайс.
Ответ 2
Извините, что возродил мертвый поток, но я потратил некоторое время, пытаясь решить эту проблему, поэтому, надеюсь, мой ответ поможет кому-то другому.
Пример в исходном вопросе запутан, вы говорите, что хотите добавить код страны, но в качестве примера укажите код города Нью-Йорка 212; Это не код страны, это код локальной зоны. Код страны для США равен 1. Таким образом, вы хотите, чтобы конечный номер выглядел как «1-212-xxx-xxxx». Мой ответ ниже объясняет, как определить код страны, а не код местной зоны.
Чтобы получить код страны для вашего собственного номера, используйте getSimCountryIso(). Не используйте getNetworkCountryIso(); getNetworkCountryIso вернет страну, в которой вы сейчас находитесь, но если вы путешествуете, это вернет неправильную страну. Например, если вы из Албании, но путешествуете в Нью-Йорке, getSimCountryIso вернет «al», но getNetworkCountryIso вернет «нас». Очевидно, что если вы используете код страны для США, у вас неправильный номер.
Теперь у вас есть код страны с двумя символами; например, Канада будет «ca». Затем вы можете использовать это как ключ поиска для таблицы ниже (полученной из http://www.sikosoft.com/item/international_telephone_country_codes_in_xml_format_using_iso_639-1).
Так как коды стран никогда не меняются, допустимо жестко кодировать таблицу поиска в вашем приложении. К сожалению, похоже, что нет прямого способа получить текущий код страны.
Ответ 3
Этот вопрос очень помог мне, я хочу дать вам весь класс, который предоставляет код страны из кода телефона и наоборот.
- CountryCodes.getCode(String country) возвращает международный код из знака страны
- CountryCodes.getCountry(String code) возвращает знаки страны из международного кода.
Экземпляр этого класса может быть предоставлен в качестве адаптера для видов, например в Activity onCreate:
Далее следует код класса
Я использую его и, похоже, работаю, но, вы знаете, справедливая смерть и налоги являются определенными. Не стесняйтесь настраивать его и предлагать исправления.
Ответ 4
в этом случае это будет выглядеть так:
Поэтому никто не должен искать и проверять дважды (контекст является локальной переменной действительного объекта Контекста). Константы .DEVICE_COUNTRY имеет тип String:) (просто переменная)
Ответ 5
Используйте зависимость compile ‘com.googlecode.libphonenumber:libphonenumber:8.0.1’ . Это облегчает задачу и обеспечивает точный результат, потому что это Google.
Здесь вы можете узнать больше об этом.
Выход, который я получаю, выглядит примерно так:
Здесь я использую spinner.
1) Я создал пользовательский адаптер CountryCodesAdapter:
2) Теперь макет моей активности, где я показываю счетчик кода страны, следующий:
3) java Код операции ниже:
Несколько дополнительных функций:
a) Ваша страна будет автоматически выбрана в счетчике.
Чтобы достичь этого, я использовал это:
Я думаю, что этот метод немного лучше, чем другие способы, перечисленные здесь. Поэтому я опубликовал это. Надеюсь, кто-то может сочтет это полезным: -)
Этот проект на GitHub здесь
Ответ 6
Если вы случайно используете Google libphonenumber, и если вы работаете с телефонными номерами, скорее всего, вы это сделаете, вы можете использовать его внутренние данные, которые описывают одно и то же. Это не публично, поэтому вам нужно использовать отражение, чтобы достичь этого:
Затем вы можете искать или обрабатывать эту карту, чтобы получить нужные данные.
Ответ 7
добавьте их в файл string.xml Наслаждайтесь:)
Ответ 8
В классе TelephonyManager я нахожу метод public String getNetworkCountryIso () , это может быть то, что вы хотите. Кроме того, есть еще один способ, который может вернуть больше информации о телефоне. Вы можете прочитать http://en.wikipedia.org/wiki/List_of_mobile_country_codes, чтобы посмотреть, какая страна представлена MCC.
Ответ 9
Я знаю, что это слишком поздно. Но у меня есть тестовое решение. Поскольку делать это со списком String и циклическим путем, это может замедлить его. Использование Hashmap было бы решением для теста. Я написал для него класс PhoneUtil . Вот код (у меня только 20 стран, но вы можете добавить к нему больше)
Ответ 10
Это код, который нужно включить в основную деятельность, чтобы заменить код, который Wais опубликовал в верхней части этой страницы. Возьмите массив, который опубликовал Wais, и добавьте его в свое приложение в ресурсы. Возможно, я немного изменил имя массива, которое будет храниться в ресурсах, кроме этого, этот код должен хорошо работать и быть более легким для чтения, если вы учитесь:
Источник
Get country name from country code
I’d need to get the full country name from the country code. For example for Netherlands, I’d need the Netherlands from the country code NL .
I thought I could do that with Locale like:
but loc.getCountry(); is empty.
Any idea about how to do this, please? Thanks in advance!
5 Answers 5
Hope this will help out.
This should work:
The first parameter of Locale is the language, which is not useful in your case.
I would like to add more information to the answers above.
If you want to specify language for results, you can use Locale(«your language») as the parameter of getDisplayCountry() .
«ZH» is the language code of Chinese. You will get «荷兰», which is the Chinese name of Netherlands.
And you can use Locale(«languages», «ISO-3166 code») to specify your language variant.
Locale(«ZH», «TW») means the variant of Chinese in Taiwan (traditional Chinese). It has many differences from the Chinese Mainland variant.
You will get «荷蘭», which is the traditional Chinese name of Netherlands.
(Even if you don’t understand Chinese, I think it’s obvious that the second Chinese character in the two names is different.)
If you do not specify a language, you will get the name of Netherlands in the device display language, which can be changed in the phone settings. The code is:
You can get a list of all languages and variants supported by Android in this question :
Источник
Android Locale – Get Locale Name And Country Code
Hi and welcome to another tutorial from Codingdemos, today you will learn about Android locale API and how you can use it inside your app to get default locale and country code.
By the end of this tutorial, you will have an app that looks like this. (Large preview)
In this tutorial we will be using the following:
- – Android studio version 3.0.1
– Android emulator Nexus 5X with API 26
– Minimum SDK API 16
1- Open up Android Studio and open any project that you have in your computer.
Create new Android Studio project or open existing project. (Large preview)
2- Open up activity_main.xml file, inside this file you will add 2 Android TextView to show language name and code and make sure to set the text size for these 2 TextView to 30sp.
3- The full code for activity_main.xml file will look like this:
4- Next open up MainActivity.java file, here you need to reference those 2 Android TextView which you have added them inside activity_main.xml file.
5- Now you will get to work with Android Locale API, add the following code below Android TextView code.
Here you use ConfigurationCompat which is a helper class to be able to have access to the configuration in backward compatibility, then you get the list of Android locale by using getLocales and finally you will use Resources to be able to access the system configuration of the Android device.
6- After initializing Locale, you will now be able to get the language name and code from Android device. Add the following code below Locale initialization.
Here you have initialized languageName textview with Locale properties.
You will use locale.getDisplayName() to get the language name that is currently being used in your Android device.
7- Build and run the app to see the output.
Using Android Locale to get language name. (Large preview)
8- Now initialize languageCode with Android Locale properties, so add the following code below languageName.
Here you use locale.getLanguage() to get the Android Locale country code of the language that is currently being used in your Android device.
9- Build and run the app to see the progress.
Getting Android Locale country code. (Large preview)
10- When you change the language of your Android device it will apply to the app as well, for example if you change your device language to Spanish you will get the following output.
11- The full code for MainActivity.java file will look like this.
12- I hope you find this tutorial helpful and if you have any question please post them in the comment below.
Источник