Различают международный роуминг и роуминг внутри страны.

Есть ли у нас какой-либо флаг или значение на телефоне, которые могут помочь решить это?


person Divya Y    schedule 06.03.2014    source источник


Ответы (2)


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

---- ИЗМЕНИТЬ ----

Поскольку, вероятно, для этого нет встроенного метода, вы можете просто определить и вести внутренний список национальных телефонных компаний и посмотреть, соответствует ли оператор 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
}
person nKn    schedule 06.03.2014
comment
Спасибо, даже я знал то же самое и не встречал ни одного документа или текста, в котором говорилось бы, что мы можем различать. У нас есть требование отображать резидентный значок памяти, когда устройство находится в международном роуминге. - person Divya Y; 07.03.2014
comment
Спасибо nKn, это хороший подход. Очень ценю вашу помощь здесь. - person Divya Y; 08.03.2014
comment
Пожалуйста. После того, как вы нашли решение для этого, не забудьте принять ответ, который помог вам больше всего, как для репутации, так и для отзывов, поскольку это поможет другим пользователям узнать, какой ответ помог вам больше всего. - person nKn; 08.03.2014
comment
Конечно, обязательно вернусь и сделаю это. в настоящее время моя оценка репутации не позволяет мне голосовать. - person Divya Y; 09.03.2014

если это телефон GSM, на мой взгляд, проще сравнить код страны, установленный на SIM-карте, с кодом страны сетевого оператора с помощью TelephonyManager.getNetworkCountryIso() и TelephonyManager.getSimCountryIso(). Если они совпадают, вы находитесь в одной стране, иначе не надо. И вам не нужно вести список имен...

person Joanmi Bardera    schedule 10.08.2015