TelephonyManager解析

来源:互联网 发布:python特性 编辑:程序博客网 时间:2024/06/06 03:58

java.lang.Object
↳ android.telephony.TelephonyManager


  • 类概述
    提供对设备上的电话服务的信息的访问。应用程序可以使用这个类中的方法来确定电话服务和状态,以及访问某些类型的用户信息。应用程序还可以注册一个侦听器接收电话状态更改的通知。
    不能直接实例化这个对象,而要通过Context.getSystemService(Context.TELEPHONY_SERVICE)来实例化它。
    请注意,访问一些电话信息是权限保护的。您的应用程序无法访问受保护的信息,除非它有在其清单文件中声明的适当权限。在权限适用的情况下,它们会在您访问受保护的信息的方法中被指出。

package com.mystudy.kibi.networktype;import android.annotation.TargetApi;import android.content.Context;import android.os.Build;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.telephony.CellInfo;import android.telephony.CellLocation;import android.telephony.TelephonyManager;import android.util.Log;import java.util.List;public class MainActivity extends AppCompatActivity {    @TargetApi(Build.VERSION_CODES.M)    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        TelephonyManager telephonyManager = (TelephonyManager) this.getSystemService(Context.TELEPHONY_SERVICE);        /**         * 在调用getAllCellInfo()方法时需要添加 ACCESS_COARSE_LOCATION 权限         */        List<CellInfo> cellInfos = telephonyManager.getAllCellInfo();        /**         * 获取电话状态         * 对应返回的常量:         * TelephonyManager.CALL_STATE_IDLE 没有活动         * TelephonyManager.CALL_STATE_OFFHOOK  摘机状态(电话机拿起听筒或按免提,此时的状态就是摘机状态)         * TelephonyManager.CALL_STATE_RINGING   来电状态         */        telephonyManager.getCallState();        /**         * 获取设备的当前位置。         * 需要添加权限:ACCESS_COARSE_LOCATION 或 ACCESS_FINE_LOCATION.         */        CellLocation cellLocation = telephonyManager.getCellLocation();        /**         * 获取手机号码         * 需要加 READ_PHONE_STATE 权限         */        String line1Number = telephonyManager.getLine1Number();        Log.e("line1Number",line1Number);        /**         * 获取数据活动状态         * 0:   DATA_ACTIVITY_NON     数据连接状态:活动,但无数据发送和接受         * 1:   DATA_ACTIVITY_IN      数据连接状态:活动,正在接受数据         * 2:   DATA_ACTIVITY_OUT     数据连接状态:活动,正在发送数据         * 3:   DATA_ACTIVITY_INOUT   数据连接状态:活动,正在接受和发送数据         * 4:   DATA_ACTIVITY_DORMANT 睡眠模式         */        int dataActivity = telephonyManager.getDataActivity();        Log.e("dataActivity",""+dataActivity);  //0        /**         * 获取数据连接状态         * 0:   DATA_DISCONNECTED   数据连接状态:断开         * 1:   DATA_CONNECTING     数据连接状态:正在连接         * 2:   DATA_CONNECTED      数据连接状态:已连接         * 3:   DATA_SUSPENDED      数据连接状态:暂停         */        int dataState = telephonyManager.getDataState();        Log.e("dataState",""+dataState);  //0(连接了WIFI)        /**         * 返回当前移动终端的唯一标识         * 如果是GSM网络,返回IMEI;如果是CDMA网络,返回MEID         */        String deviceId = telephonyManager.getDeviceId();        Log.e("deviceId",deviceId); //868666020520895        /**         * 返回移动终端的软件版本,例如:GSM手机的IMEI/SV码。         */        String deviceSoftwareVersion = telephonyManager.getDeviceSoftwareVersion();        Log.e("deviceSoftwareVersion",deviceSoftwareVersion);   //78        /**         * 返回一个GSM手机的一组标识符.         */        String groupIdLevel1 = telephonyManager.getGroupIdLevel1();        Log.e("groupIdLevel1",groupIdLevel1);   //ffffffff        /**         * 获取短信代理商的URL         */        String mmsUAProfUrl = telephonyManager.getMmsUAProfUrl();        Log.e("mmsUAProfUrl",mmsUAProfUrl); // http://www.google.com/oha/rdf/ua-profile-kila.xml        /**         * 获取短信代理商         */        String mmsUserAgent = telephonyManager.getMmsUserAgent();        Log.e("mmsUserAgent",mmsUserAgent); //Android-Mms/0.1        /**         * 获取ISO标准的国家码         */        String networkCountryIso = telephonyManager.getNetworkCountryIso();        Log.e("networkCountryIso",networkCountryIso);   //cn        /**         * MCC+MNC代码 (SIM卡运营商国家代码和运营商网络代码)(IMSI)         */        String networkOperator = telephonyManager.getNetworkOperator();        Log.e("networkOperator",networkOperator);   //46000        /**         * 获取移动网络运营商的名字         */        String networkOperatorName = telephonyManager.getNetworkOperatorName();        Log.e("networkOperatorName",networkOperatorName);   //中国移动        /**         * 获取MCC+MNC代码 (SIM卡运营商国家代码和运营商网络代码)(IMSI)         */        String simOperator = telephonyManager.getSimOperator();        Log.e("simOperator",simOperator);   //46002        /**         * 获取SIM卡运营商的名称         */        String simOperatorName = telephonyManager.getSimOperatorName();        Log.e("simOperatorName",simOperatorName);   //中国移动        /**         * 获取SIM卡运营商的国家代码         */        String simCountryIso = telephonyManager.getSimCountryIso();        Log.e("simCountryIso",simCountryIso);   //cn        /**         * 在可应用的情况下返回SIM卡的序号         */        String simSerialNumber = telephonyManager.getSimSerialNumber();        Log.e("simSerialNumber",simSerialNumber);   //898600000913f9060263        /**         * 返回例如独特的用户ID,一个GSM手机的IMSI。         */        String subscriberId = telephonyManager.getSubscriberId();        Log.e("subscriberId",subscriberId); //460029019493057        //获取语音信箱的检索字母标识符        String voiceMailAlphaTag = telephonyManager.getVoiceMailAlphaTag();        Log.e("voiceMailAlphaTag",voiceMailAlphaTag);   //语音信箱        /**         * 获取语音邮件号码  没有语音邮箱功能  返回为null         *///        String voiceMailNumber = telephonyManager.getVoiceMailNumber();//        Log.e("voiceMailNumber",voiceMailNumber);        /**         * 获取网络类型         * NETWORK_TYPE_UNKNOWN = 0;         * NETWORK_TYPE_GPRS = 1;       2G         * NETWORK_TYPE_EDGE = 2;       2G         * NETWORK_TYPE_UMTS = 3;       3G         * NETWORK_TYPE_CDMA = 4;       2G         * NETWORK_TYPE_EVDO_0 = 5;     3G         * NETWORK_TYPE_EVDO_A = 6;     3G         * NETWORK_TYPE_1xRTT = 7;      2G         * NETWORK_TYPE_HSDPA = 8;      3G         * NETWORK_TYPE_HSUPA = 9;      3G         * NETWORK_TYPE_HSPA = 10;      3G         * NETWORK_TYPE_IDEN = 11;      2G         * NETWORK_TYPE_EVDO_B = 12;    3G         * NETWORK_TYPE_LTE = 13;       4G         * NETWORK_TYPE_EHRPD = 14;     3G         * NETWORK_TYPE_HSPAP = 15;     3G         * NETWORK_TYPE_GSM = 16;       2G         * NETWORK_TYPE_TD_SCDMA = 17;  3G         * NETWORK_TYPE_IWLAN = 18;     4G         */        int networkType = telephonyManager.getNetworkType();        Log.e("networkType",""+networkType);    //13        /**         * 返回1:单卡         * 返回2:双卡         */        int phoneCount = telephonyManager.getPhoneCount();        Log.e("phoneCount",""+phoneCount);  //2        /**         * 获取电话类型         *  0:  PHONE_TYPE_NONE     无类型         *  1:  PHONE_TYPE_GSM      全球移动通信系统         *  2:  PHONE_TYPE_CDMA     码分多址         *  3:  PHONE_TYPE_SIP      跨越因特网的高级电话业务         */        int phoneType = telephonyManager.getPhoneType();        Log.e("phoneType",""+phoneType);    //1        /**         * 获取SIM卡的状态:         *  0:   SIM_STATE_UNKNOWN          未知         *  1:   SIM_STATE_ABSENT           没有可用的卡         *  2:   SIM_STATE_PIN_REQUIRED     锁定:需要用户的卡销解锁         *  3:   SIM_STATE_PUK_REQUIRED     锁定:要求用户的SIM卡PUK码解锁         *  4:   SIM_STATE_NETWORK_LOCKED   锁定:要求网络销解锁         *  5:   SIM_STATE_READY            准备完毕         */        int simState = telephonyManager.getSimState();        Log.e("simState",""+simState);  //5    }}
0 0