Читайте мобильный провайдер с телефона - PullRequest
2 голосов
/ 04 июля 2010

Использование моего нового телефона Android создало небольшую проблему: я живу в стране A, но мой оператор мобильной связи - из страны B, потому что он просто дешевле. Что касается тарифов на мобильные телефоны, моя страна не является чужой страной для страны B. Однако я должен включить роуминг данных в своем телефоне Android. Проблема в том, что я тоже часто бываю в стране С, и каждый раз мне приходится отключать роуминг данных.

Поэтому я подумал о создании небольшого приложения, которое отключает роуминг данных, если я не нахожусь в стране A или B, и включает его в противном случае.

Моя первая попытка состояла в том, чтобы определить местоположение с помощью GPS, но это довольно бесполезно, потому что мне пришлось бы рассчитывать для каждой координаты, если она находится в разрешенном диапазоне. Поэтому я думаю, что лучшим решением было бы считывание с телефона текущего провайдера, и если этого провайдера нет в белом списке (который я определил), роуминг данных отключен.

Знаете ли вы другие подходы? И как я могу получить имя текущего провайдера? А как программно отключить роуминг данных?

Ответы [ 2 ]

5 голосов
/ 05 июля 2010

Вы можете использовать TelephonyManager:

TelephonyManager tm = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);

Некоторые из его методов, которые могут быть полезны для вашего случая:

tm.getNetworkCountryIso();
tm.getNetworkOperator();
tm.getNetworkOperatorName();
tm.getSimCountryIso();
tm.getSimOperator();
tm.getSimOperatorName();
1 голос
/ 04 июля 2010

Можете ли вы использовать обратное геокодирование?Что-то вроде Номинатим ?Просто отправьте GPS-координаты и проверьте страну, в которой вы находитесь.

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

При наборе номера в роуминге, похоже, что ввод неверных данных APN делает свое дело.

...