Различают международный роуминг и роуминг со страной.
У нас есть какой-нибудь флаг или значение на телефоне, которое может помочь решить это?
2 ответа
Я думаю, что это невозможно, вы можете просто различать, используете ли вы роуминг или нет, но, по крайней мере, официально я не могу найти никакой информации об этом.
- getRoaming () из
ServiceState
учебный класс. - isRoaming () из
NetworkInfo
учебный класс. - Обнаружение роуминга в Stackru.
---- РЕДАКТИРОВАТЬ ----
Поскольку, вероятно, для этого нет встроенного метода int, вы можете просто определить и сохранить внутренний список национальных телефонных компаний и посмотреть, соответствует ли оператор SIM одной из них, и в этом случае у вас будет национальный роуминг, международный роуминг, если текущий оператор не совпадает с SIM-картой и отсутствует в вашем списке, или отсутствие роуминга, если текущий оператор совпадает с оператором SIM-карты. Негативным моментом является то, что вам нужно отслеживать все национальные операторы и добавлять их в список, если есть какие-то новые, но это происходит не слишком часто (или, по крайней мере, здесь).
Так что в основном это будет что-то вроде этого:
TelephonyManager telephMan = ((TelephonyManager) Context.getSystemService(Context.TELEPHONY_SERVICE));
// This will be the current registered operator
String currentOperatorName = telephMan.getNetworkOperatorName();
// This will return the SIM operator
String simOperatorName = telephonyManager.getSimOperatorName();
// Additionally you'll have to keep a list of national operators
ArrayList<String> myCountryOperators = new ArrayList<String();
myCountryOperators.add("...");
myCountryOperators.add("...");
...
if (currentOperatorName.equals(simOperatorName)) {
// No roaming
}
else if (myCountryOperators.contains(currentOperatorName)) {
// National roaming
}
else {
// International roaming
}
Если это телефон GSM, на мой взгляд, проще сравнить код страны, установленный на SIM-карте, с кодом страны оператора сотовой связи с помощью TelephonyManager.getNetworkCountryIso() и TelephonyManager.getSimCountryIso(). Если они совпадают, вы находитесь в той же стране, иначе нет. И вам не нужно вести список имен...