0

我们在电话上是否有任何标志或价值可以帮助决定这一点?

4

2 回答 2

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
}
于 2014-03-06T19:29:15.580 回答
2

如果是 GSM 手机,我认为使用 TelephonyManager.getNetworkCountryIso() 和 TelephonyManager.getSimCountryIso() 比较 SIM 卡中设置的国家代码和网络运营商的国家代码更容易,如果它们匹配你在同一个国家,否则不要。而且您不需要保留姓名列表...

于 2015-08-10T19:11:18.357 回答