区分国际漫游和漫游国家。

时间:2014-03-06 19:16:37

标签: android telephony roaming

我们手机上有任何标志或价值可以帮助您做出决定吗?

2 个答案:

答案 0 :(得分:3)

我认为这是不可能的,你可以区分你是否正在使用漫游,但至少官方我找不到任何关于此的信息。

----编辑----

由于可能没有针对此的内置方法,您可以简单地定义并保留国内电话公司的内部列表,并查看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
}

答案 1 :(得分:2)

如果是GSM手机,我认为通过TelephonyManager.getNetworkCountryIso()和TelephonyManager.getSimCountryIso()可以更轻松地将SIM卡中设置的国家/地区代码与网络运营商的国家/地区代码进行比较 如果他们匹配你在同一个国家,否则不。而且你不需要保留名单......