Чтение сотового провайдера с телефона

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

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

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

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


person Community    schedule 04.07.2010    source источник


Ответы (2)


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

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

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

tm.getNetworkCountryIso();
tm.getNetworkOperator();
tm.getNetworkOperatorName();
tm.getSimCountryIso();
tm.getSimOperator();
tm.getSimOperatorName();
person Jan S.    schedule 05.07.2010

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

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

Что касается отключения роуминга данных, кажется, что ввод неверных данных APN помогает.

person npinti    schedule 04.07.2010
comment
Android имеет встроенные помощники по геокодированию, см. этот developer.android.com/intl /de/reference/android/location/ - person Pentium10; 04.07.2010
comment
Я думал об этом, и это было бы действительно хорошо, но проблема в том, что мне всегда нужно включать GPS-приемник. По разным причинам я этого не хочу. - person RoflcoptrException; 04.07.2010
comment
Вам не нужно включать GPS, вы можете получить координаты из вашей сети или WIFI. - person Jan S.; 04.07.2010