电话管理员的价值是否可靠且可变(cdma)?

时间:2012-07-18 22:07:25

标签: java android gsm telephonymanager cdma

我想知道我是否可以依赖Android上的国家/地区,MCC等电话值来为我的应用。我可以使用setprop在运行中更改它们吗?我尝试使用setprop进行更改,但似乎无法正常工作。根据我的理解,电话管理器是一个类/接口,代表GSM或CDMA的硬件配置。在GSM的情况下,这可以是SIM,并且在CDMA的情况下,它可以是硬件。我的问题是:

  • 谁是第一次在这两种情况下更新这些值?
  • 操作系统是否将这些值保存为只读?
  • 如果用户前往其他国家/地区或某些区域,国家代码和MCC值等某些值会自动更新,该怎么办?
  • 我可以重置这些值吗?

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

3 个答案:

答案 0 :(得分:2)

根据android文档

  

提供对有关电话服务的信息的访问权限   设备。应用程序可以使用此类中的方法来确定   电话服务和状态,以及访问某些类型的   订户信息。应用程序也可以注册一个监听器   接收电话状态变化的通知。

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

答案 1 :(得分:1)

@Bo CDMA的工作方式与GSM不同。 CDMA总是有一个家庭基地和许多游客基地位置。并且您可以随时了解使用TelephonyManager方法的访客操作员,这被认为对CDMA来说是不可靠的。

答案 2 :(得分:0)

我决定将它添加为答案......

我找到了解决CDMA手机问题的方法..如果是CDMA手机,那么手机的ICC硬件总是与GSM中的SIM卡相当。您所要做的就是使用与硬件相关的系统属性。以编程方式,您可以使用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”));