在AndroidManifest.xml文件中增加
<!--允许读取电话状态SIM的权限-->
<uses-permission
android:name="android.permission.READ_PHONE_STATE" />
代码如下:
private
void getSystemPhoneMessage(){
TelephonyManager
telephonyManager =
(TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE);
//手机串号:GSM手机的
IMEI 和 CDMA手机的 MEID.
String
deviceID = telephonyManager.getDeviceId();
//手机号(有些手机号无法获取,是因为运营商在SIM中没有写入手机号)
String
tel = telephonyManager.getLine1Number();
//获取手机SIM卡的序列号
String
imei =telephonyManager.getSimSerialNumber();
//获取客户id,在gsm中是imsi号
String
imsi =telephonyManager.getSubscriberId();
//电话方位
CellLocation
str = telephonyManager.getCellLocation();
//运营商名称,注意:仅当用户已在网络注册时有效,在CDMA网络中结果也许不可靠
String
networkoperatorName = telephonyManager.getNetworkOperatorName();
//取得和语音邮件相关的标签,即为识别符
String
voiceMail = telephonyManager.getVoiceMailAlphaTag();
//获取语音邮件号码:
String
voiceMailNumber = telephonyManager.getVoiceMailNumber();
//获取ISO国家码,相当于提供SIM卡的国家码。
String
simCountryIso = telephonyManager.getSimCountryIso();
/**
* 电话状态:
* 1.tm.CALL_STATE_IDLE=0 无活动
* 2.tm.CALL_STATE_RINGING=1 响铃
* 3.tm.CALL_STATE_OFFHOOK=2 摘机
*/
int
callState = telephonyManager.getCallState();
/**
* 设备的软件版本号:
* 例如:the IMEI/SV(software version) for GSM phones.
* Return null if the software version is not available.
*/
String
devicesoftware = telephonyManager.getDeviceSoftwareVersion();
/**
* 获取ISO标准的国家码,即国际长途区号。
* 注意:仅当用户已在网络注册后有效。
* 在CDMA网络中结果也许不可靠。
*/
String
networkCountry = telephonyManager.getNetworkCountryIso();
/**
* MCC+MNC(mobile country code + mobile network code)
* 注意:仅当用户已在网络注册时有效。
* 在CDMA网络中结果也许不可靠。
*/
String
networkoperator = telephonyManager.getNetworkOperator();
/**
* 当前使用的网络类型:
* 例如: NETWORK_TYPE_UNKNOWN 网络类型未知 0
NETWORK_TYPE_GPRS GPRS网络 1
NETWORK_TYPE_EDGE EDGE网络 2
NETWORK_TYPE_UMTS UMTS网络 3
NETWORK_TYPE_HSDPA HSDPA网络 8
NETWORK_TYPE_HSUPA HSUPA网络 9
NETWORK_TYPE_HSPA HSPA网络 10
NETWORK_TYPE_CDMA CDMA网络,IS95A 或 IS95B. 4
NETWORK_TYPE_EVDO_0 EVDO网络, revision 0. 5
NETWORK_TYPE_EVDO_A EVDO网络, revision A. 6
NETWORK_TYPE_1xRTT 1xRTT网络 7
*/
int
netWorkType = telephonyManager.getNetworkType();
/**
* 手机类型:
* 例如: PHONE_TYPE_NONE 无信号
PHONE_TYPE_GSM GSM信号
PHONE_TYPE_CDMA CDMA信号
*/
int
phoneType = telephonyManager.getPhoneType();
/**
* 获取SIM卡提供的移动国家码和移动网络码.5或6位的十进制数字.
* SIM卡的状态必须是 SIM_STATE_READY(使用getSimState()判断).
*/
String
simOperator = telephonyManager.getSimOperator();
/**
* 服务商名称:
* 例如:中国移动、联通
* SIM卡的状态必须是 SIM_STATE_READY(使用getSimState()判断).
*/
String
simOperatorName = telephonyManager.getSimOperatorName();
/**
* SIM的状态信息:
* SIM_STATE_UNKNOWN 未知状态 0
SIM_STATE_ABSENT 没插卡 1
SIM_STATE_PIN_REQUIRED 锁定状态,需要用户的PIN码解锁 2
SIM_STATE_PUK_REQUIRED 锁定状态,需要用户的PUK码解锁 3
SIM_STATE_NETWORK_LOCKED 锁定状态,需要网络的PIN码解锁 4
SIM_STATE_READY 就绪状态 5
*/
int
simStat = telephonyManager.getSimState();
/**
* ICC卡是否存在
*/
boolean
bl= telephonyManager.hasIccCard();
/**
* 是否漫游:
* (在GSM用途下)
*/
boolean
blean = telephonyManager.isNetworkRoaming();
/**
* 附近的电话的信息:
* 类型:List<NeighboringCellInfo>
* 需要权限:android.Manifest.permission#ACCESS_COARSE_UPDATES
*/
List<NeighboringCellInfo>
list =
telephonyManager.getNeighboringCellInfo();//List<NeighboringCellInfo>
/**
* 获取数据连接状态
*/
int
dataActivty = telephonyManager.getDataActivity();
}
<!--允许读取电话状态SIM的权限-->
<uses-permission
android:name="android.permission.READ_PHONE_STATE" />
代码如下:
private
void getSystemPhoneMessage(){
TelephonyManager
telephonyManager =
(TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE);
//手机串号:GSM手机的
IMEI 和 CDMA手机的 MEID.
String
deviceID = telephonyManager.getDeviceId();
//手机号(有些手机号无法获取,是因为运营商在SIM中没有写入手机号)
String
tel = telephonyManager.getLine1Number();
//获取手机SIM卡的序列号
String
imei =telephonyManager.getSimSerialNumber();
//获取客户id,在gsm中是imsi号
String
imsi =telephonyManager.getSubscriberId();
//电话方位
CellLocation
str = telephonyManager.getCellLocation();
//运营商名称,注意:仅当用户已在网络注册时有效,在CDMA网络中结果也许不可靠
String
networkoperatorName = telephonyManager.getNetworkOperatorName();
//取得和语音邮件相关的标签,即为识别符
String
voiceMail = telephonyManager.getVoiceMailAlphaTag();
//获取语音邮件号码:
String
voiceMailNumber = telephonyManager.getVoiceMailNumber();
//获取ISO国家码,相当于提供SIM卡的国家码。
String
simCountryIso = telephonyManager.getSimCountryIso();
/**
* 电话状态:
* 1.tm.CALL_STATE_IDLE=0 无活动
* 2.tm.CALL_STATE_RINGING=1 响铃
* 3.tm.CALL_STATE_OFFHOOK=2 摘机
*/
int
callState = telephonyManager.getCallState();
/**
* 设备的软件版本号:
* 例如:the IMEI/SV(software version) for GSM phones.
* Return null if the software version is not available.
*/
String
devicesoftware = telephonyManager.getDeviceSoftwareVersion();
/**
* 获取ISO标准的国家码,即国际长途区号。
* 注意:仅当用户已在网络注册后有效。
* 在CDMA网络中结果也许不可靠。
*/
String
networkCountry = telephonyManager.getNetworkCountryIso();
/**
* MCC+MNC(mobile country code + mobile network code)
* 注意:仅当用户已在网络注册时有效。
* 在CDMA网络中结果也许不可靠。
*/
String
networkoperator = telephonyManager.getNetworkOperator();
/**
* 当前使用的网络类型:
* 例如: NETWORK_TYPE_UNKNOWN 网络类型未知 0
NETWORK_TYPE_GPRS GPRS网络 1
NETWORK_TYPE_EDGE EDGE网络 2
NETWORK_TYPE_UMTS UMTS网络 3
NETWORK_TYPE_HSDPA HSDPA网络 8
NETWORK_TYPE_HSUPA HSUPA网络 9
NETWORK_TYPE_HSPA HSPA网络 10
NETWORK_TYPE_CDMA CDMA网络,IS95A 或 IS95B. 4
NETWORK_TYPE_EVDO_0 EVDO网络, revision 0. 5
NETWORK_TYPE_EVDO_A EVDO网络, revision A. 6
NETWORK_TYPE_1xRTT 1xRTT网络 7
*/
int
netWorkType = telephonyManager.getNetworkType();
/**
* 手机类型:
* 例如: PHONE_TYPE_NONE 无信号
PHONE_TYPE_GSM GSM信号
PHONE_TYPE_CDMA CDMA信号
*/
int
phoneType = telephonyManager.getPhoneType();
/**
* 获取SIM卡提供的移动国家码和移动网络码.5或6位的十进制数字.
* SIM卡的状态必须是 SIM_STATE_READY(使用getSimState()判断).
*/
String
simOperator = telephonyManager.getSimOperator();
/**
* 服务商名称:
* 例如:中国移动、联通
* SIM卡的状态必须是 SIM_STATE_READY(使用getSimState()判断).
*/
String
simOperatorName = telephonyManager.getSimOperatorName();
/**
* SIM的状态信息:
* SIM_STATE_UNKNOWN 未知状态 0
SIM_STATE_ABSENT 没插卡 1
SIM_STATE_PIN_REQUIRED 锁定状态,需要用户的PIN码解锁 2
SIM_STATE_PUK_REQUIRED 锁定状态,需要用户的PUK码解锁 3
SIM_STATE_NETWORK_LOCKED 锁定状态,需要网络的PIN码解锁 4
SIM_STATE_READY 就绪状态 5
*/
int
simStat = telephonyManager.getSimState();
/**
* ICC卡是否存在
*/
boolean
bl= telephonyManager.hasIccCard();
/**
* 是否漫游:
* (在GSM用途下)
*/
boolean
blean = telephonyManager.isNetworkRoaming();
/**
* 附近的电话的信息:
* 类型:List<NeighboringCellInfo>
* 需要权限:android.Manifest.permission#ACCESS_COARSE_UPDATES
*/
List<NeighboringCellInfo>
list =
telephonyManager.getNeighboringCellInfo();//List<NeighboringCellInfo>
/**
* 获取数据连接状态
*/
int
dataActivty = telephonyManager.getDataActivity();
}