TelephonyManager类使用方法大全
这个类是很有用地,可以得到很多关于手机的信息,做应用时必须的工具。
不废话,直接上注释后的代码,请享用:
<CODE>
/ **
*
* @作者丁冉
* 创建日期 2010年4月29日 下午五点零二分47秒
*
* /
包net.sunniwell.app;
进口android.app.Activity;
进口android.os.Bundle;
进口android.telephony.CellLocation;
进口android.telephony.PhoneStateListener;
进口android.telephony.TelephonyManager;
公共类TelManager的延伸活动{
@覆盖
保护无效的onCreate(包savedInstanceState),{
super.onCreate(savedInstanceState),;
:TelephonyManager TM =(TelephonyManager)this.getSystemService(TELEPHONY_SERVICE);
/ *
* 电话状态:
* 1.tm.CALL_STATE_IDLE = 0 无活动
* 2.tm.CALL_STATE_RINGING = 1 响铃
* 3.tm.CALL_STATE_OFFHOOK = 2 摘机
* /
tm.getCallState();/ / INT
/ *
* 电话方位:
*
* /
tm.getCellLocation();/ / CellLocation
/ *
* 唯一的设备ID :
* GSM 手机的 IMEI 和 CDMA 手机的 MEID。
*返回null,如果设备ID是不可用的。
* /
tm.getDeviceId();/ /字符串
/ *
* 设备的软件版本号:
* 例如:GSM手机的IMEI / SV(软件版)。
*返回null,如果软件版本是不可用的。
* /
tm.getDeviceSoftwareVersion();/ /字符串
/ *
* 手机号:
* GSM 手机的 MSISDN。
*返回null,如果它是不可用的。
* /
tm.getLine1Number();/ /字符串
/ *
* 附近的电话的信息:
* 类型:列表<NeighboringCellInfo>
*的 需要权限android.Manifest.permission#ACCESS_COARSE_UPDATES
* /
tm.getNeighboringCellInfo();/ /列表<NeighboringCellInfo>
/ *
* 获取ISO 标准的国家码,即国际长途区号。
* 注意:仅当用户已在网络注册后有效。
* 在CDMA 网络中结果也许不可靠。
* /
tm.getNetworkCountryIso();/ /字符串
/ *
* MCC + MNC(移动国家代码+移动网络代码)
* 注意:仅当用户已在网络注册时有效。
* 在CDMA 网络中结果也许不可靠。
* /
tm.getNetworkOperator();/ /字符串
/ *
* 按照字母次序的目前注册运营商(当前已注册的用户)的名字
* 注意:仅当用户已在网络注册时有效。
* 在CDMA 网络中结果也许不可靠。
* /
tm.getNetworkOperatorName();/ /字符串
/ *
* 当前使用的网络类型:
* 例如: NETWORK_TYPE_UNKNOWN 网络类型未知 0
NETWORK_TYPE_GPRS GPRS 网络 1
NETWORK_TYPE_EDGE EDGE 网络 2
NETWORK_TYPE_UMTS UMTS 网络
NETWORK_TYPE_HSDPA HSDPA 网络
NETWORK_TYPE_HSUPA HSUPA 网络
NETWORK_TYPE_HSPA HSPA 网络 10
NETWORK_TYPE_CDMA CDMA 网络,IS95A 或 IS95B。4
NETWORK_TYPE_EVDO_0 EVDO 网络,修订版本0。5
NETWORK_TYPE_EVDO_A EVDO 网络,修订版A 6
NETWORK_TYPE_1xRTT 1xRTT的网络
* /
tm.getNetworkType();/ / INT
/ *
* 手机类型:
* 例如: PHONE_TYPE_NONE 无信号
PHONE_TYPE_GSM GSM 信号
PHONE_TYPE_CDMA CDMA 信号
* /
tm.getPhoneType();/ / INT
/ *
*返回的ISO国家代码相当于SIM卡供应商的国家代码。
* 获取ISO 国家码,相当于提供SIM 卡的国家码。
*
* /
tm.getSimCountryIso();/ /字符串
/ *
*返回MCC + MNC(移动国家代码+移动网络代码)的SIM卡供应商。5或6位小数。
* 获取SIM 卡提供的移动国家码和移动网络码.5 或6 位的十进制数字。
* SIM 卡的状态必须是 SIM_STATE_READY(使用getSimState()判断)。
* /
tm.getSimOperator();/ /字符串
/ *
* 服务商名称:
* 例如:中国移动,联通
* SIM 卡的状态必须是 SIM_STATE_READY(使用getSimState()判断)。
* /
tm.getSimOperatorName();/ /字符串
/ *
* SIM 卡的序列号:
* 需要权限:READ_PHONE_STATE
* /
tm.getSimSerialNumber();/ /字符串
/ *
* 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 就绪状态
* /
tm.getSimState();/ / INT
/ *
* 唯一的用户ID :
* 例如:IMSI(国际移动用户识别码)的GSM手机。
* 需要权限:READ_PHONE_STATE
* /
tm.getSubscriberId();/ /字符串
/ *
* 取得和语音邮件相关的标签,即为识别符
* 需要权限:READ_PHONE_STATE
* /
tm.getVoiceMailAlphaTag();/ /字符串
/ *
* 获取语音邮件号码:
* 需要权限:READ_PHONE_STATE
* /
tm.getVoiceMailNumber();/ /字符串
/ *
* ICC 卡是否存在
* /
tm.hasIccCard();/ /布尔
/ *
* 是否漫游:
*(在GSM 用途下)
* /
tm.isNetworkRoaming();/ /
}
}
<code/>
鉴于有些同志没有源码,我把源码粘出来,TelephonyManager.java :
<CODE>
包android.telephony;
进口com.android.internal.telephony。
进口的java.util.ArrayList;
进口的java.util.List;
进口android.annotation.SdkConstant.SdkConstantType;
进口android.annotation.SdkConstant;
进口android.content.Context;
进口android.os.Bundle;
进口android.os.RemoteException;
进口android.os.ServiceManager;
进口android.os.SystemProperties;
/ **
*提供访问信息的电话服务
*设备。应用程序可以使用这个类中的方法,
*确定电话服务和状态,以及访问一些
*类型的用户信息。应用程序还可以注册
*一个监听器来接收通知的电话状态的变化。
* <P>
*您没有实例化这个类的,而是你找回
*通过一个实例引用
* {@链接的android.content.Context#getSystemService
* Context.getSystemService(Context.TELEPHONY_SERVICE)}。
* <P>
*请注意,接取到一些电话信息。
*许可保护。你的应用程序无法访问受保护
*信息,除非有适当的权限声明
*它的manifest文件。在权限申请,他们指出,在
*的方法,通过它您可以访问受保护的信息。
* /
公共类TelephonyManager {
私有静态最后字符串TelephonyManager TAG =“”;
私人上下文mContext;
私人ITelephonyRegistry mRegistry;
/ ** @隐藏* /
公共TelephonyManager(上下文背景){
mContext =上下文;
mRegistry =(ITelephonyRegistry.Stub.asInterface(ServiceManager.getService
“telephony.registry”));
}
/ ** @隐藏* /
私人TelephonyManager(){
}
私有静态TelephonyManager sInstance =新TelephonyManager();
/ ** @隐藏* /
公共静态TelephonyManager getDefault方法(){
返回sInstance;
}
/ /
/ /广播意向行动
/ /
/ **
*广播意图行动,表明该呼叫状态(蜂窝)
*设备上的已改变。
*
* <P>
* {@#EXTRA_STATE额外的表示,新的呼叫状态。
*如果新的状态振铃,第二个加
* {@#EXTRA_INCOMING_NUMBER提供来电号码
*一个字符串。
*
* <p class="note">
*需要的READ_PHONE_STATE的许可。
*
* <p class="note">
*这是一个{@链接android.content.Context#sendStickyBroadcast粘}
* 1.0版中播出,但它不再是粘。
*相反,使用的{@ link#getCallState同步查询当前呼叫状态。
*
* @#EXTRA_STATE
* @#EXTRA_INCOMING_NUMBER
* @#getCallState
* /
@ SdkConstant(SdkConstantType.BROADCAST_INTENT_ACTION)
公共静态字符串ACTION_PHONE_STATE_CHANGED =
“android.intent.action.PHONE_STATE”;
/ **
*使用{@的链接#ACTION_PHONE_STATE_CHANGED}广播查找键
*一个包含新的呼叫状态。
*
* @#EXTRA_STATE_IDLE
* @看到#EXTRA_STATE_RINGING的
* @#EXTRA_STATE_OFFHOOK
*
* <p class="note">
*获取与
* {@的链接android.content.Intent#getStringExtra(字符串)。
* /
公共静态最后字符串EXTRA_STATE Phone.STATE_KEY;
/ **
*使用的{@ link#EXTRA_STATE}对应的值
* {@#CALL_STATE_IDLE。
* /
公共静态最后字符串EXTRA_STATE_IDLE = Phone.State.IDLE.toString();
/ **
*使用的{@ link#EXTRA_STATE}对应的值
* {@链接#CALL_STATE_RINGING。
* /
公共静态最后字符串EXTRA_STATE_RINGING = Phone.State.RINGING.toString();
/ **
*使用的{@ link#EXTRA_STATE}对应的值
* {@链接#CALL_STATE_OFFHOOK},。
* /
公共静态最后字符串EXTRA_STATE_OFFHOOK = Phone.State.OFFHOOK.toString();
/ **
*使用{@的链接#ACTION_PHONE_STATE_CHANGED}广播查找键
*一个包含来电号码。
唯一有效的新的振铃呼叫状态。
*
* <p class="note">
*获取与
* {@的链接android.content.Intent#getStringExtra(字符串)。
* /
公共静态最后的字符串EXTRA_INCOMING_NUMBER =“incoming_number”;
/ /
/ /
/ /设备信息
/ /
/ /
/ **
*返回的移动设备,例如,软件的版本号
* GSM手机的IMEI / SV。
*
* <P>需要权限:
* {@链接android.Manifest.permission#READ_PHONE_STATE READ_PHONE_STATE}
* /
公共的字符串getDeviceSoftwareVersion(){
尝试{
返回getSubscriberInfo()。getDeviceSvn();
}的catch(RemoteException的除外)
}
返回null;
}
/ **
*返回的唯一的设备ID,例如,用于GSM的IMEI
*手机。
*
* <P>需要权限:
* {@链接android.Manifest.permission#READ_PHONE_STATE READ_PHONE_STATE}
* /
公共的字符串getDeviceId(){
尝试{
返回getSubscriberInfo()。getDeviceId();
}的catch(RemoteException的除外)
}
返回null;
}
/ **
*返回设备的当前位置。
*
* <P>需要权限:{@ android.Manifest.permission ACCESS_COARSE_LOCATION
* ACCESS_COARSE_LOCATION。
* /
“的的公共CellLocation getCellLocation(){
尝试{
捆绑包= getITelephony()。getCellLocation();
返回CellLocation.newFromBundle(包);
}的catch(RemoteException的除外)
}
返回null;
}
/ **
*启用位置更新通知。{@#onCellLocationChanged链接PhoneStateListener
* PhoneStateListener.onCellLocationChanged}将被称为位置更新。
*
* <P>需要权限:{@ android.Manifest.permission CONTROL_LOCATION_UPDATES
* CONTROL_LOCATION_UPDATES}
*
* @隐藏
* /
公共无效enableLocationUpdates(){
尝试{
getITelephony()。enableLocationUpdates();
}的catch(RemoteException的除外)
}
}
/ **
*禁用位置更新通知。{@#onCellLocationChanged链接PhoneStateListener
* PhoneStateListener.onCellLocationChanged}将被称为位置更新。
*
* <P>需要权限:{@ android.Manifest.permission CONTROL_LOCATION_UPDATES
* CONTROL_LOCATION_UPDATES}
*
* @隐藏
* /
公共无效disableLocationUpdates(){
尝试{
getITelephony()。disableLocationUpdates();
}的catch(RemoteException的除外)
}
}
/ **
*返回的相邻小区的移动设备的信息。
*
* @返回列表的NeighboringCellInfo或空,如果信息不可用。
*
* <P>需要权限:
*(的一个android.Manifest.permission#ACCESS_COARSE_UPDATES}
* /
的公开名单<NeighboringCellInfo> getNeighboringCellInfo(){
尝试{
返回getITelephony()。getNeighboringCellInfo();
}的catch(RemoteException的除外)
}
返回null;
}
/ **
*没有电话模块
* /
公共静态最终诠释PHONE_TYPE_NONE = 0;
/ **
* GSM手机
* /
公共静态最终诠释PHONE_TYPE_GSM = 1;
/ **
*返回一个常数,表示设备的电话类型。
*
* @看到#PHONE_TYPE_NONE的
* @#PHONE_TYPE_GSM
* /
公共的诠释getPhoneType(){
/ /在未来,我们真的应该检查此
返回PHONE_TYPE_GSM;
}
/ /
/ /
/ /当前网络
/ /
/ /
/ **
*返回当前的注册运营商的字母名称。
* <P>
*可用性:只有当用户注册到网络
* /
公共的字符串getNetworkOperatorName(){
,返回SystemProperties.get(TelephonyProperties.PROPERTY_OPERATOR_ALPHA);
}
/ **
*返回当前的注册运营商的数字名称(MCC + MNC)。
* <P>
*可用性:只有当用户注册到网络
* /
公共的字符串getNetworkOperator(){
,返回SystemProperties.get(TelephonyProperties.PROPERTY_OPERATOR_NUMERIC);
}
/ **
*返回true,如果该设备被认为是对当前的漫游
*网络,为GSM目的。
* <P>
*可用性:只有当用户注册到网络
* /
公共的布尔isNetworkRoaming(){
返回“true”。等于(SystemProperties.get(TelephonyProperties.PROPERTY_OPERATOR_ISROAMING));
}
/ **
返回目前注册的ISO国家代码同等学历
运营商的移动国家代码(MCC)。
* <P>
*可用性:只有当用户注册到网络
* /
公共:字符串getNetworkCountryIso(){
,返回SystemProperties.get(TelephonyProperties.PROPERTY_OPERATOR_ISO_COUNTRY);
}
/ **网络类型是未知* /
公共静态最终诠释NETWORK_TYPE_UNKNOWN = 0;
/ **当前网络的GPRS * /
公共静态的最终诠释NETWORK_TYPE_GPRS = 1;
/ **当前网络EDGE * /
公共静态最终诠释NETWORK_TYPE_EDGE = 2;
/ **当前网络UMTS * /
公共静态最终诠释NETWORK_TYPE_UMTS = 3;
/ **
*返回一个常数表示无线技术(网络型)
*目前在设备上使用。
* @返回的网络类型
*
* @#NETWORK_TYPE_UNKNOWN
* @#NETWORK_TYPE_GPRS
* @#NETWORK_TYPE_EDGE
* @#NETWORK_TYPE_UMTS
* /
公共的诠释getNetworkType(){
字符串道具:= SystemProperties.get(TelephonyProperties.PROPERTY_DATA_NETWORK_TYPE);
(“GPRS”。等于(PROP)){
返回NETWORK_TYPE_GPRS;
}
否则,如果(“EDGE”。等于(PROP)){
返回NETWORK_TYPE_EDGE;
}
否则,如果(“UMTS”。等于(PROP)){
返回NETWORK_TYPE_UMTS;
}
其他{
返回NETWORK_TYPE_UNKNOWN;
}
}
/ **
*返回一个字符串形式的无线电技术(网络型)
*目前在设备上使用。
* @返回的无线电技术的名称
*
* @隐藏未决的API议会检讨
* /
公共的字符串getNetworkTypeName(){
开关(getNetworkType()){
案例NETWORK_TYPE_GPRS:
返回“GPRS”;
案例NETWORK_TYPE_EDGE:
返回“EDGE”;
案例NETWORK_TYPE_UMTS:
返回“UMTS”;
默认情况下:
返回“未知”;
}
}
/ /
/ /
/ / SIM卡
/ /
/ /
/ ** SIM卡状态:未知。表示SIM卡的转型
*国家之间的。例如,当用户输入了SIM卡销
*在PIN_REQUIRED状态下,一个查询SIM卡状态回报
*此状态,然后转向SIM_STATE_READY。* /
公共静态最终诠释SIM_STATE_UNKNOWN = 0;
/ ** SIM卡状态:无SIM卡的设备* /
公共静态最终诠释SIM_STATE_ABSENT = 1;
/ ** SIM卡状态:锁定:用户的SIM卡的PIN码解锁* /
公共静态最后,诠释SIM_STATE_PIN_REQUIRED = 2;
/ ** SIM卡状态:锁定:用户的SIM PUK解锁* /
公共静态最后,诠释SIM_STATE_PUK_REQUIRED = 3;
/ ** SIM卡状态:锁定:要求它们的网络PIN解锁* /
公共静态最终诠释SIM_STATE_NETWORK_LOCKED = 4;
/ ** SIM卡状态:就绪* /
公共静态最终诠释SIM_STATE_READY = 5;
/ **
*返回一个常数,表示的状态
*设备的SIM卡。
*
* @#SIM_STATE_UNKNOWN
* @#SIM_STATE_ABSENT
* @看到#SIM_STATE_PIN_REQUIRED的
* @看到#SIM_STATE_PUK_REQUIRED的
* @看到#SIM_STATE_NETWORK_LOCKED的
* @看到#SIM_STATE_READY的
* /
公众:INT getSimState(){
字符串道具:= SystemProperties.get(TelephonyProperties.PROPERTY_SIM_STATE);
(“缺席”。等于(PROP)){
返回SIM_STATE_ABSENT;
}
否则,如果(的“PIN_REQUIRED”。等于(PROP)){
SIM_STATE_PIN_REQUIRED;
}
否则,如果(的“PUK_REQUIRED”。等于(PROP)){
SIM_STATE_PUK_REQUIRED;
}
否则,如果(的“NETWORK_LOCKED”。等于(PROP)){
返回SIM_STATE_NETWORK_LOCKED;
}
否则,如果(“READY”。等于(PROP)){
SIM_STATE_READY;
}
其他{
返回SIM_STATE_UNKNOWN;
}
}
/ **
*返回MCC + MNC(移动国家代码+移动网络代码)
*提供者的SIM卡。5或6位小数。
* <P>
*状况:SIM状态必须是{@#SIM_STATE_READY}
*
* @#getSimState
* /
公共的字符串getSimOperator(){
,返回SystemProperties.get(TelephonyProperties.PROPERTY_SIM_OPERATOR_NUMERIC);
}
/ **
*返回服务提供者名称(SPN)。
* <P>
*状况:SIM状态必须是{@#SIM_STATE_READY}
*
* @#getSimState
* /
公共的字符串getSimOperatorName(){
,返回SystemProperties.get(TelephonyProperties.PROPERTY_SIM_OPERATOR_ALPHA);
}
/ **
*返回的ISO国家代码相当于SIM卡供应商的国家代码。
* /
公共:字符串getSimCountryIso(){
,返回SystemProperties.get(TelephonyProperties.PROPERTY_SIM_OPERATOR_ISO_COUNTRY);
}
/ **
*返回SIM卡的序列号,如果适用的话。
* <P>
*需要权限:
* {@链接android.Manifest.permission#READ_PHONE_STATE READ_PHONE_STATE}
* /
公共的字符串getSimSerialNumber(){
尝试{
返回getSubscriberInfo()。getSimSerialNumber();
}的catch(RemoteException的除外)
}
返回null;
}
/ /
/ /
/ /用户信息
/ /
/ /
/ **
*返回的唯一的用户ID,例如,为一个GSM手机的IMSI。
* <P>
*需要权限:
* {@链接android.Manifest.permission#READ_PHONE_STATE READ_PHONE_STATE}
* /
公共的字符串getSubscriberId(){
尝试{
返回getSubscriberInfo()。getSubscriberId();
}的catch(RemoteException的除外)
}
返回null;
}
/ **
*返回第1行中的电话号码的字符串,例如,的MSISDN
*的GSM手机。
* <P>
*需要权限:
* {@链接android.Manifest.permission#READ_PHONE_STATE READ_PHONE_STATE}
* /
公共的字符串getLine1Number(){
尝试{
返回getSubscriberInfo()。getLine1Number();
}的catch(RemoteException的除外)
}
返回null;
}
/ **
*返回的字母标识符与1号线。
* <P>
*需要权限:
* {@链接android.Manifest.permission#READ_PHONE_STATE READ_PHONE_STATE}
* @隐藏
*似乎没有人叫这个。
* /
公共的字符串getLine1AlphaTag(){
尝试{
返回getSubscriberInfo()。getLine1AlphaTag();
}的catch(RemoteException的除外)
}
返回null;
}
/ **
*传回的语音信箱号码。
* <P>
*需要权限:
* {@链接android.Manifest.permission#READ_PHONE_STATE READ_PHONE_STATE}
* /
公共的字符串getVoiceMailNumber(){
尝试{
返回getSubscriberInfo()。getVoiceMailNumber();
}的catch(RemoteException的除外)
}
返回null;
}
/ **
*检索字母标识符的声音
*信箱号码。
* <P>
*需要权限:
* {@链接android.Manifest.permission#READ_PHONE_STATE READ_PHONE_STATE}
* /
公共的字符串getVoiceMailAlphaTag(){
尝试{
返回getSubscriberInfo()。getVoiceMailAlphaTag();
}的catch(RemoteException的除外)
}
返回null;
}
的私人IPhoneSubInfo getSubscriberInfo(){
/ /每次,因为该进程崩溃了很多
返回IPhoneSubInfo.Stub.asInterface(ServiceManager.getService(“iphonesubinfo”));
}
/ **设备通话状态:无活动。* /
公共静态最终诠释CALL_STATE_IDLE = 0;
/ **设备通话状态:振铃。一个新的呼叫到达,是
*振铃或等待。在后者的情况下,另一个呼叫
*已被激活。* /
公共静态最终诠释CALL_STATE_RINGING的= 1;
/ **设备通话状态:摘机。至少有一个呼叫存在
*拨号,积极,或保留,并没有呼叫振铃
*或等待。* /
公共静态最终诠释CALL_STATE_OFFHOOK = 2;
/ **
*返回一个常量,表示在设备上的呼叫状态(蜂窝)。
* /
公众:INT getCallState(){
尝试{
返回getITelephony()。getCallState();
}的catch(RemoteException的除外)
/ /电话过程中重新启动。
返回CALL_STATE_IDLE;
}
}
/ **数据连接活动:无交通。* /
公共静态最终诠释DATA_ACTIVITY_NONE = 0X00000000;
/ **数据连接活动:目前接收IP PPP通信。* /
公共静态最终诠释DATA_ACTIVITY_IN = 0X00000001;
/ **数据连接活动:发送IP PPP交通。* /
公共静态最终诠释DATA_ACTIVITY_OUT = 0x00000002;
/ **数据连接活动:发送和接收
* IP,PPP通信。* /
公共静态最终诠释DATA_ACTIVITY_INOUT = DATA_ACTIVITY_IN | DATA_ACTIVITY_OUT;
/ **
*返回一个常量,表示一个数据连接上的活动类型
*(蜂窝)。
*
* @看到#DATA_ACTIVITY_NONE的
* @#DATA_ACTIVITY_IN
* @#DATA_ACTIVITY_OUT
* @#DATA_ACTIVITY_INOUT
* /
公共的诠释getDataActivity(){
尝试{
返回getITelephony()。getDataActivity();
}的catch(RemoteException的除外)
/ /电话过程中重新启动。
返回DATA_ACTIVITY_NONE;
}
}
/ **数据连接状态:断开连接。IP的流量。* /
公共静态最终诠释DATA_DISCONNECTED = 0;
/ **数据连接状态:目前正在建立一个数据连接。* /
公共静态最终诠释DATA_CONNECTING的= 1;
/ **数据连接状态:已连接。IP流量应该是可以的。* /
公共静态最后,诠释DATA_CONNECTED = 2;
/ **数据连接状态:暂停。连接已经建立,但IP
*交通暂时不可用。例如,在一个2G网络,
*数据活动时,可能会被暂停一个语音呼叫到达。* /
公共静态最终诠释DATA_SUSPENDED = 3;
/ **
*返回一个常数,表示当前的数据连接状态
*(蜂窝)。
*
* @看到#DATA_DISCONNECTED的
* @看到#DATA_CONNECTING的
* @看到#DATA_CONNECTED的
* @看到#DATA_SUSPENDED的
* /
公众:INT getDataState(){
尝试{
getITelephony()返回。getDataState();
}的catch(RemoteException的除外)
/ /电话过程中重新启动。
DATA_DISCONNECTED;
}
}
私人:ITelephony getITelephony(){
返回ITelephony.Stub.asInterface(ServiceManager.getService(Context.TELEPHONY_SERVICE));
}
/ /
/ /
/ / PhoneStateListener
/ /
/ /
/ **
*注册一个侦听器对象接收的更改通知
在指定电话状态。
* <P>
要注册一个监听器,通过{@ PhoneStateListener}
*至少指定一个电话状态的兴趣
*事件的说法。
*
*注册时,指定的电话状态时
*的变化,电话管理器调用适当的
*回调侦听器对象上的方法,并通过
*的电流(udpated)值。
* <P>
若要注销侦听器,通过监听器对象,并设置
*事件参数
* {@链接的PhoneStateListener#LISTEN_NONE LISTEN_NONE}(0)。
*
* @参数监听器{@链接PhoneStateListener}对象注册
*(或注销)
* @参数的事件感兴趣的监听器的电话状态(S),
*作为按位或组合的{@ link PhoneStateListener}
* LISTEN_标志。
* /
公共无效听(PhoneStateListener监听器,INT){
= NULL和字符串pkgForDebug = mContext!?mContext.getPackageName():“<unknown>(未知)”;
尝试{
布尔notifyNow =(getITelephony()!= NULL);
mRegistry.listen(pkgForDebug,listener.callback,事件,notifyNow);
}的catch(RemoteException的除外)
/ /系统进程死
}
}
}