Android之TelephonyManager类

  TelephonyManager类是做应用时必须的工具。该类主要提供了一系列用于访问与手机通讯相关的状态和信息的get方法。其中包括手机SIM的状态和信息、电信网络的状态及手机用户的信息。TelephonyManager类的对象可以通过Context.getSystemService(Context.TELEPHONY_SERVICE)方法来获得,然后可以使用get方法获取相关数据。

需要为其添加相应的权限。

<uses-permission android:name="android.permission.CALL_PHONE" />
<uses-permission android:name="android.permission.MODIFY_PHONE_STATE" />

1 /**
  2 *
  3 *@author dingran
  4 *创建日期 2010-4-29 下午05:02:47
  5 *
  6 */
  7 package net.sunniwell.app;
  8 import android.app.Activity;
  9 import android.os.Bundle;
 10 import android.telephony.CellLocation;
 11 import android.telephony.PhoneStateListener;
 12 import android.telephony.TelephonyManager;
 13 public class TelManager extends Activity {
 14 @Override
 15 protected void onCreate(Bundle savedInstanceState) {
 16   super.onCreate(savedInstanceState);
 17   TelephonyManager tm = (TelephonyManager) this.getSystemService(TELEPHONY_SERVICE);
 18   
 19   /*
 20    * 电话状态:
 21    * 1.tm.CALL_STATE_IDLE=0          无活动
 22    * 2.tm.CALL_STATE_RINGING=1  响铃
 23    * 3.tm.CALL_STATE_OFFHOOK=2  摘机
 24    */
 25   tm.getCallState();//int
 26   
 27   /*
 28    * 电话方位:
 29    * 
 30    */
 31   tm.getCellLocation();//CellLocation
 32   
 33   /*
 34    * 唯一的设备ID:
 35    * GSM手机的 IMEI 和 CDMA手机的 MEID. 
 36    * Return null if device ID is not available.
 37    */
 38   tm.getDeviceId();//String
 39   
 40   /*
 41    * 设备的软件版本号:
 42    * 例如:the IMEI/SV(software version) for GSM phones.
 43    * Return null if the software version is not available. 
 44    */
 45   tm.getDeviceSoftwareVersion();//String
 46   
 47   /*
 48    * 手机号:
 49    * GSM手机的 MSISDN.
 50    * Return null if it is unavailable. 
 51    */
 52   tm.getLine1Number();//String
 53   
 54   /*
 55    * 附近的电话的信息:
 56    * 类型:List<NeighboringCellInfo> 
 57    * 需要权限:android.Manifest.permission#ACCESS_COARSE_UPDATES
 58    */
 59   tm.getNeighboringCellInfo();//List<NeighboringCellInfo>
 60   
 61   /*
 62    * 获取ISO标准的国家码,即国际长途区号。
 63    * 注意:仅当用户已在网络注册后有效。
 64    *       在CDMA网络中结果也许不可靠。
 65    */
 66   tm.getNetworkCountryIso();//String
 67   
 68   /*
 69    * MCC+MNC(mobile country code + mobile network code)
 70    * 注意:仅当用户已在网络注册时有效。
 71    *    在CDMA网络中结果也许不可靠。
 72    */
 73   tm.getNetworkOperator();//String
 74   
 75   /*
 76    * 按照字母次序的current registered operator(当前已注册的用户)的名字
 77    * 注意:仅当用户已在网络注册时有效。
 78    *    在CDMA网络中结果也许不可靠。
 79    */
 80   tm.getNetworkOperatorName();//String
 81   
 82   /*
 83    * 当前使用的网络类型:
 84    * 例如: NETWORK_TYPE_UNKNOWN  网络类型未知  0
 85      NETWORK_TYPE_GPRS     GPRS网络  1
 86      NETWORK_TYPE_EDGE     EDGE网络  2
 87      NETWORK_TYPE_UMTS     UMTS网络  3
 88      NETWORK_TYPE_HSDPA    HSDPA网络  8 
 89      NETWORK_TYPE_HSUPA    HSUPA网络  9
 90      NETWORK_TYPE_HSPA     HSPA网络  10
 91      NETWORK_TYPE_CDMA     CDMA网络,IS95A 或 IS95B.  4
 92      NETWORK_TYPE_EVDO_0   EVDO网络, revision 0.  5
 93      NETWORK_TYPE_EVDO_A   EVDO网络, revision A.  6
 94      NETWORK_TYPE_1xRTT    1xRTT网络  7
 95    */
 96   tm.getNetworkType();//int
 97   
 98   /*
 99    * 手机类型:
100    * 例如: PHONE_TYPE_NONE  无信号
101      PHONE_TYPE_GSM   GSM信号
102      PHONE_TYPE_CDMA  CDMA信号
103    */
104   tm.getPhoneType();//int
105   
106   /*
107    * Returns the ISO country code equivalent for the SIM provider's country code.
108    * 获取ISO国家码,相当于提供SIM卡的国家码。
109    * 
110    */
111   tm.getSimCountryIso();//String
112   
113   /*
114    * Returns the MCC+MNC (mobile country code + mobile network code) of the provider of the SIM. 5 or 6 decimal digits.
115    * 获取SIM卡提供的移动国家码和移动网络码.5或6位的十进制数字.
116    * SIM卡的状态必须是 SIM_STATE_READY(使用getSimState()判断).
117    */
118   tm.getSimOperator();//String
119   
120   /*
121    * 服务商名称:
122    * 例如:中国移动、联通
123    * SIM卡的状态必须是 SIM_STATE_READY(使用getSimState()判断).
124    */
125   tm.getSimOperatorName();//String
126   
127   /*
128    * SIM卡的序列号:
129    * 需要权限:READ_PHONE_STATE
130    */
131   tm.getSimSerialNumber();//String
132   
133   /*
134    * SIM的状态信息:
135    *  SIM_STATE_UNKNOWN          未知状态 0
136    SIM_STATE_ABSENT           没插卡 1
137    SIM_STATE_PIN_REQUIRED     锁定状态,需要用户的PIN码解锁 2
138    SIM_STATE_PUK_REQUIRED     锁定状态,需要用户的PUK码解锁 3
139    SIM_STATE_NETWORK_LOCKED   锁定状态,需要网络的PIN码解锁 4
140    SIM_STATE_READY            就绪状态 5
141    */
142   tm.getSimState();//int
143   
144   /*
145    * 唯一的用户ID:
146    * 例如:IMSI(国际移动用户识别码) for a GSM phone.
147    * 需要权限:READ_PHONE_STATE
148    */
149   tm.getSubscriberId();//String
150   
151   /*
152    * 取得和语音邮件相关的标签,即为识别符
153    * 需要权限:READ_PHONE_STATE
154    */
155   tm.getVoiceMailAlphaTag();//String
156   
157   /*
158    * 获取语音邮件号码:
159    * 需要权限:READ_PHONE_STATE
160    */
161   tm.getVoiceMailNumber();//String
162   
163   /*
164    * ICC卡是否存在
165    */
166   tm.hasIccCard();//boolean
167   
168   /*
169    * 是否漫游:
170    * (在GSM用途下)
171    */
172   tm.isNetworkRoaming();//
173   
174   
175   
176 }
177 }