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 }