Android中的Telephony学习笔记(2)
上一篇文章中学习了android.provider中Telephony类。这一篇文章学习android.telephony包中的类,这些类是android提供给上层调用的API。
为监测基本电话信息提供的一系列的API。例如网络类型,连接状态,操作电话号码的工具类。
一共25个类。下面逐一介绍:
TelephonyManager
处理设备上的电话服务信息,应用可以使用这些方法检测电话的状态,处理用户的信息类型。也可以注册一个监听器接受电话状态改变的通知。该类不能直接实例化,可以通过
Context.getSystemService(Context.TELEPHONY_SERVICE)来获得该实例。如果想访问受保护的信息,需要在配置文件里配置相应的权限才能访问。
Constants
- ACTION_PHONE_STATE_CHANGE:当call状态改变时发送一个广播意图。
- ACTION_RESPOND_VIA_MESSAGE:当用户使用短信拒接时,发送一个意图电泳sms app去发送短信
- CALL_STATE_IDLE:设备状态:no activity
- CALL_STATE_OFFHOOK:设备状态:挂断
- CALL_STATE_RINGING:设备状态:有电话呼叫
- DATA_ACTIVITY_DORMANT:数据连接处于活动状态,但是物理连接时关闭的
- DATA_ACTIVITY_IN:数据连接处于活动状态,当前接受IP PPP流量
- DATA_ACTIVITY_INOUT:接受和发送IP PPP流量
- DATA_ACTIVITY_NONE:数据连接处于活动状态,但是无流量
- DATE_ACTIVITY_OUT:数据连接属于连接状态,发送IP PPP流量
- DATA_CONNECTED:数据连接状态:已连接
- DATA_CONNECTING:正在建立数据连接
- DATA_DISCONNECTED:数据连接断开
- DATA_SUSPENDED:数据连接中断
- EXTRA_INCOMING_NUMBER:当call状态改变时发送意图里面包含的来电电话号码
- EXTRA_STATE:来电状态
- NETWORK_TYPE_1xRTT:2G网络
- NETWORK_TYPE_CDMA:码分多址协议
- NETWORK_TYPE_EDGE:即增强型数据速率GSM演进技术,GSM过渡到3G的协议
- NETWORK_TYPE_EHRPD:CDMA过渡到LTE的协议
- NETWORK_TYPE_EVDO_0:EVDO_0网络类型
- NETWORK_TYPE_EVDO_A:EVDO_A网络类型
- NETWORK_TYPE_EVDO_B:EVDO_B网络类型
- NETWORK_TYPE_GPRS:GRPS(通用分组无线服务技术)网络类型
- NETWORK_TYPE_HSDPA:HSDPA网络类型
- NETWORK_TYPE_HSPAP:HSPAP(高速下行分组接入,3.5G)网络类型
- NETWORK_TYPE_HSUPA:HSUPA(高速上行链路分组接入)网络类型
- NETWORK_TYPE_IDEN:IDEN(集群通信系统)网络类型
- NETWORK_TYPE_LTE:LTE(长期演进技术,UMTS的进步版)网络类型
- NETWORK_TYPE_UMTS:UMTS(通用移动通信系统)网络类型
- NETWORK_TYPE_UNKNOWN:未知网络类型
- PHONE_TYPE_CDMA:CDMA格式的手机
- PHONE_TYPE_GSM:GSM格式的手机
- PHONE_TYPE_NONE:没有手机射频
- PHONE_TYPE_SIP:基于SIP协议的手机
- SIM_STATE_ABSENT:SIM卡状态:查找不到
- SIM_STATE_NETWORK_LOCKED:SIM状态:锁定,需要网络PIN码解锁
- SIM_STATE_PIN_REQUIRED:SIM状态:锁定,需要用户PIN码解锁
- SIM_STATE_PUK_REQUIRED:SIM卡状态:锁定,需要解锁卡解锁
- SIM_STATE_READY:SIM卡状态:准备(Ready)
- SIM_STATE_UNKNOWN:SIM卡状态:未知(Unknown)
Methods
List<CellInfo> getAllCellInfo()
得到所有电元信息
int getCallState()
当前通话状态
CellLocation getCellLocation()
获取当前设备的位置
int getDataActivity()
数据连接中的activity的类型
int getDataState()
数据连接的状态
String getDeviceId()
设备的ID号
String getDeviceSoftwareVersion()
设备的软件版本
String getGroupIdLevel1()
GSM手机的groupId level1
String getLine1Number()
获取1号线的电话号码,例如GSM手机的MSISDN。需要权限:READ_PHONE_STATE.
String getMmsUAProfUrl()
短信代理商的URL
String getMmsUserAgent()
短信代理商
List<NeighboringCellInfo> getNeighboringCellInfo()
获取所有邻电元信息
String getNetworkCountryIso()
网络运营商的国家码MCC
String getNetworkOperator()
网络注册运营商的MCC+MNC码
String getNetworkOperatorName()
网络运营商的名称
String getNetworkType()
网络类型
String getPhoneType()
手机类型
String getSimCountryIso()
ISO提供的国家代码
String getSimOperator()
获取SIM卡5位或6位移动国家码MCC+移动网络码MNC
String getSimOperatorName()
得到服务提供商的名称
String getSimSerialNumber()
得到sim串口号
String getSimState()
得到sim卡的状态
String getSubscriberId()
唯一用户标识ID。代表用户的身份,例如GSM手机的IMSI号
String getVoiceMailAlphaTag()
得到与语音信箱号码有关的字母标识符,需要权限READ_PHONE_STATE;
String getVoiceMailNumber()
得到语音信箱的号码
boolean hasIccCard()
是否含有ICC卡
boolean isNetworkRoaming()
是否漫游
void listen(PhoneStateListenter,int)
注册一个监听器,当指定的手机状态改变时,接收该手机发出的通知