android - 如何获取 CDMA Android 设备的国家/地区代码?

标签 android telephony telephonymanager cdma

如何在 CDMA 网络下检索 Android 设备的国家代码信息?

对于所有其他人,您可以只使用 TelephonyManager为此:

String countryCode = null;
TelephonyManager telMgr = (TelephonyManager)context.getSystemService(Context.TELEPHONY_SERVICE);
if (telMgr.getPhoneType() != TelephonyManager.PHONE_TYPE_CDMA)
    countryCode = telMgr.getNetworkCountryIso();
}
else {
    // Now what???
}

我搜索了一下,但没有找到任何有用的信息来找到答案。

一些想法:

  • GPS 位置:您可以从 GeoCoder 获取国家/地区;和
  • IP 地址:有一些不错的 API 可以获取它,例如 ipinfodb .

可以使用这些还是有更好的?

最佳答案

我找到了解决这个问题的方法...如果是 CDMA 手机,那么手机总是具有与 GSM 中的 SIM 卡相当的 ICC 硬件。

您所要做的就是使用与硬件关联的系统属性。以编程方式,您可以使用 Java 反射来获取此信息。与 GSM 设备不同,这是不可更改的,即使系统已获得 root 权限也是如此。

Class<?> c = Class.forName("android.os.SystemProperties");
Method get = c.getMethod("get", String.class);

// Gives MCC + MNC
String homeOperator = ((String) get.invoke(c, "ro.cdma.home.operator.numeric"));
String country = homeOperator.substring(0, 3); // The last three digits is MNC

关于android - 如何获取 CDMA Android 设备的国家/地区代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8292287/

相关文章:

android - 在 Android 手机上检测 5G 连接

java - 如何将位置区号转换为地址?

android - 如何在 flutter 后台运行 dart 代码?

android - 为什么找不到 ImageView 类?

java - Admob 横幅广告未显示在 Android 应用程序上

android - 来自单一源代码的多个 Android 应用程序包 .apk 文件

javascript - 如何使用 Twilio 调用实时语音电话而不是在接听电话时只播放 MP3?

iphone - 在 iPhone 中创建调用按钮?

c# - .NET 中的电话事件通知

android - Nougat 上未调用 TelephonyManager 的 PhoneStateListener