3

我想知道我的应用程序是否可以依赖 Android 上的电话值(例如国家/地区、MCC 等)。我可以使用 setprop 在运行时更改它们吗?我尝试使用 setprop 进行更改,但似乎没有用。据我了解,电话管理器是一个代表 GSM 或 CDMA 硬件配置的类/接口。在 GSM 的情况下,这可能是 sim,而在 CDMA 的情况下,它可能是硬件。我的问题是:

  • 谁是第一次在这两种情况下更新这些值?
  • 这些值是否由操作系统保存为只读?
  • 如果用户到不同的国家或地区旅行,国家代码和 MCC 值等一些值会自动更新吗?
  • 我可以重置这些值吗?

我无意更改这些值中的任何一个,但想了解它的工作原理!如果有人可以帮助我,我将不胜感激。

4

3 回答 3

2

根据android文档

提供对设备上电话服务信息的访问。应用程序可以使用此类中的方法来确定电话服务和状态,以及访问某些类型的用户信息。应用程序还可以注册一个侦听器以接收电话状态更改的通知。

TelephonyManager 用于读取电话信息。关于您关于 MCC 和 MNC 代码的问题:是的,当手机在其他国家/地区时,它们会改变。您可以订阅接收这些事件并确定该用户现在在不同的国家。

于 2012-07-18T22:15:43.170 回答
1

@Bo CDMA 的工作方式与 GSM 不同。CDMA一直都有一个基地和许多访客基地的位置。您可以随时使用 TelephonyManager 方法了解访客运营商,这对于 CDMA 来说是不可靠的。

于 2012-07-31T19:19:47.910 回答
0

我决定也将其添加为答案...

我找到了一种在 CDMA 手机上解决这个问题的方法。如果它是 CDMA 手机,那么手机总是具有与 GSM 中的 SIM 卡相当的 ICC 硬件。您所要做的就是使用与硬件相关的系统属性。您可以通过编程方式使用 Java 反射来获取此信息。与 GSM 设备不同,即使系统扎根,这也是不可改变的。类 c=Class.forName("android.os.SystemProperties"); 方法 get = c.getMethod("get", String.class); String homeOperator = ((String) get.invoke(c, "ro.cdma.home.operator.numeric"));

于 2012-09-21T22:14:55.097 回答