Android 与手机通讯相关的状态和信息的类 TelephonyManager

来源:互联网 发布:windows pe硬盘版 编辑:程序博客网 时间:2024/05/08 02:32

Android里获取运行商的类和方法,以及号码段与运营商的对应关系很容易就能搜到,
手机通讯相关的状态和信息可有系统服务类TelephonyManager获取,获取手机网络状态用到的类为ConnectivityManager 和NetworkInfo。
但是状态码比较多一时很难记住,我把搜到的资料归纳整理了一下,至少用到时能快速找到对应的方法与状态

 

1、Android里手机通讯相关的状态和信息的类 TelephonyManager:

    TelephonyManager类主要提供了一系列用于访问与手机通讯相关的状态和信息的get方法。其中包括手机SIM的状态和信息、电信网络的状态及手机用户的信息。在应用程序中可以使用这些get方法获取相关数据。

    TelephonyManager类的对象可以通过Context.getSystemService(Context.TELEPHONY_SERVICE)方法来获得,在开发的时候需要为其添加相应的权限。

TelephonyManager tm = (TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE);

 

2、获取手机通讯状态:

       通过TelephonyManager类的方法可以获取手机的各种状态信息:

(1) getPhoneType();获取手机制式,

PHONE_TYPE_CDMA 手机制式为CDMA,电信 

PHONE_TYPE_GSM 手机制式为GSM,移动和联通

PHONE_TYPE_NONE 手机制式未知

 (2) getNetworkType();获取网络类型

在中国,联通的3G为UMTS或HSDPA,

移动和联通的2G为GPRS或EGDE;

 电信的2G为CDMA,电信的3G为EVDO

NETWORK_TYPE_CDMA 网络类型为CDMA 

NETWORK_TYPE_EDGE 网络类型为EDGE

NETWORK_TYPE_EVDO_0 网络类型为EVDO0 

NETWORK_TYPE_EVDO_A 网络类型为EVDOA

NETWORK_TYPE_GPRS 网络类型为GPRS 

NETWORK_TYPE_HSDPA 网络类型为HSDPA

NETWORK_TYPE_HSPA 网络类型为HSPA 

NETWORK_TYPE_HSUPA 网络类型为HSUPA

NETWORK_TYPE_UMTS 网络类型为UMTS

       (2) getSimState();获取SIM卡状态

SIM_STATE_ABSENT SIM卡未找到SIM_STATE_NETWORK_LOCKED SIM卡网络被锁定,需要Network PIN解锁 

SIM_STATE_PIN_REQUIRED SIM卡PIN被锁定,需要User PIN解锁

SIM_STATE_PUK_REQUIRED SIM卡PUK被锁定,需要User PUK解锁

        (3)getSubscriberId();获取到网络的IMSI编号

注:可直接用getSimOperator();返回MCC+MNC代码 (SIM卡运营商国家代码和运营商网络代码)(IMSI),比如返回46001为中国联通

       IMSI是国际移动用户识别码的简称,共有15位,其结构如下:

       MCC+MNC+MIN

       MCC:Mobile Country Code,移动国家码,共3位,中国为460;

       MNC:Mobile NetworkCode,移动网络码,共2

       在中国,移动的代码为电00和02,联通的代码为01,电信的代码为03

       合起来就是(也是Android手机中APN配置文件中的代码):

       中国移动:46000 46002

       中国联通:46001

       中国电信:46003

       举例,一个IMSI号码为460030912121001,这部手机的运营商为中国电信

      (4) getDeviceId();获取设备编号,返回当前移动终端的唯一标识,

         如果是GSM网络,返回IMEI;如果是CDMA网络,返回MEID。

IMEI是(国际移动设备标识)的简称,由15位数字组成的”电子串号”,它与每台手机一一对应,而且该码是全世界唯一的,其组成为:

        1. 前6位数(TAC)是”型号核准号码”,一般代表机型

        2. 接着的2位数(FAC)是”最后装配号”,一般代表产地

        3. 之后的6位数(SNR)是”串号”,一般代表生产顺序号

        4. 最后1位数(SP)通常是”0″,为检验码,目前暂备用

注:如果IMEI,IMSI都为空,可能原因是手机上装了360手机卫士,禁止了“获取该应用获取设备信息”,改为“允许”即可正常获取IMEI、IMSI

 

3、TelephonyManager获取其他电话状态

getSimCountryIso();获取SIM卡国别,返回SIM卡提供商的国家代码

getSimSerialNumber();获取SIM卡序列号,返回SIM卡的序列号(IMEI)

 SIM_STATE_READY SIM卡可用

         SIM_STATE_UNKNOWNSIM卡未知

getDeviceSoftwareVersion();    获取软件版本,返回移动终端的软件版本,例如:GSM手机的IMEI/SV码。

getCallState();获取电话状态

CALL_STATE_IDLE 无任何状态时

CALL_STATE_OFFHOOK 接起电话时

CALL_STATE_RINGING电话进来时

getNetworkOperator();获取网络运营商代号,返回移动网络运营商的名字(SPN)

getNetworkOperatorName();获取网络运营商名称

 getCellLocation();获取设备当前位置

getDataActivity();获取数据活动状态

DATA_ACTIVITY_IN 数据连接状态:活动,正在接受数据

DATA_ACTIVITY_OUT 数据连接状态:活动,正在发送数据

DATA_ACTIVITY_INOUT 数据连接状态:活动,正在接受和发送数据 

DATA_ACTIVITY_NONE 数据连接状态:活动,但无数据发送和接受

getDataState();获取数据连接状态

DATA_CONNECTED 数据连接状态:已连接

DATA_CONNECTING 数据连接状态:正在连接

 DATA_DISCONNECTED 数据连接状态:断开 

DATA_SUSPENDED 数据连接状态:暂停

getLine1Number(); 返回手机号码,对于GSM网络来说即MSISDN

getCellLocation();返回当前移动终端的位置

getNetworkCountryIso();返回ISO标准的国家码,即国际长途区号

getNetworkOperator();返回MCC+MNC代码 (SIM卡运营商国家代码和运营商网络代码)(IMSI)

       getNetworkOperatorName();   返回移动网络运营商的名字(SPN)

getSimCountryIso(); 返回SIM卡提供商的国家代码

getSimOperator();返回MCC+MNC代码 (SIM卡运营商国家代码和运营商网络代码)(IMSI)

 getSimSerialNumber();返回SIM卡的序列号(IMEI)

getVoiceMailAlphaTag();获取语音信箱号码关联的字母标识。

getVoiceMailNumber();返回语音邮件号码

isNetworkRoaming();返回手机是否处于漫游状态

 

4、获取手机网络状态,用到的类ConnectivityManager和NetworkInfo

网络连接管理者:

ConnectivityManager connectionManager = (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);  

获取网络的状态信息:

NetworkInfo networkInfo =connectionManager.getActiveNetworkInfo();

getDetailedState():获取详细状态。

 getType():获取网络类型(一般为移动或Wi-Fi)。

 getExtraInfo():获取附加信息。

 getReason():获取连接失败的原因。

 getTypeName():获取网络类型名称(一般取值“WIFI”或“MOBILE”)。

  sAvailable():判断该网络是否可用。

 isConnected():判断是否已经连接。

 isConnectedOrConnecting():判断是否已经连接或正在连接。

 isFailover():判断是否连接失败。

 isRoaming():判断是否漫游

结果:

(1)getType 是WIFI,用wifi上的时候

这时getExtraInfo是空的

(2)getType 是MOBILE,用手机上网

getExtraInfo的值是cmnet,用移动CMNET方式

getExtraInfo的值是cmwap,用移动CMWAP方式

getExtraInfo的值是3gwap,用联通3gwap方式

getExtraInfo的值是3gnet,用联通3gnet方式

getExtraInfo的值是uniwap,用联通uniwap方式

getExtraInfo的值是uninet,用联通uninet方式

 

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 中医药职工大学 北中医药大学 二本中医药大学 中医药大学王玉英 中医药管理部门 中医药发展论坛 中医药大学电话 省中医药研究院 中医中医药 中医中医药网 广州中医药大学第一附属医院 河南中医药大学第一附属医院 河南中医药大学附属医院 成都中医药大学附属医院 云南中医药大学教务管理系统 湖北中医药大学教务 中医药大学附属医院 湖北中医药大学教务在线 天津中医药大学第一附属医院 天津中医药大学研究生院 云南中医药大学教务系统 北京中医药大学东方学院 山东中医药大学附属医院 辽宁中医药大学附属医院 上海中医药大学研究生院 广西中医药大学第一附属医院 山东中医药大学研究生处 江西中医药大学科技学院 广州中医药大学研究生院 陕西中医药大学数字校园 湖南中医药大学附属医院 安徽中医药大学第一附属医院 山东中医药大学第二附属医院 中医药大学东方学院 陕西中医药大学附属医院 安徽中医药大学附属医院 湖南中医药大学第一附属医院 浙江中医药大学教务处 甘肃中医药大学教务网 河南中医药大学中文网 世界中医药学会联合会