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 位的十进制数字

   * 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的除外)

            / /系统进程死

        }

    }

}

posted on 2013-01-22 10:19  Code大蛇丸  阅读(1268)  评论(0编辑  收藏  举报