Android之TelephonyManager类的方法详解

来源:互联网 发布:战争雷霆手机数据库 编辑:程序博客网 时间:2024/06/06 17:31
 TelephonyManager类主要提供了一系列用于访问与手机通讯相关的状态和信息的get方法。其中包括手机SIM的状态和信息、电信网络的状态及手机用户的信息。在应用程序中可以使用这些get方法获取相关数据。

    TelephonyManager类的对象可以通过Context.getSystemService(Context.TELEPHONY_SERVICE)方法来获得,需要注意的是有些通讯信息的获取对应用程序的权限有一定的限制,在开发的时候需要为其添加相应的权限。

 <uses-permission android:name="android.permission.READ_PHONE_STATE" />

以下列出TelephonyManager类所有方法及说明:



public class TelephonyManagerActivity extends Activity {

    @Override
    
public void onCreate(Bundle savedInstanceState) {
        
super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        TelephonyManager tm 
= (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
        
/**
         * 返回电话状态
         * 
         * CALL_STATE_IDLE 无任何状态时 
         * CALL_STATE_OFFHOOK 接起电话时
         * CALL_STATE_RINGING 电话进来时 
         
*/
        tm.getCallState();
        
//返回当前移动终端的位置
        CellLocation location=tm.getCellLocation();
        
//请求位置更新,如果更新将产生广播,接收对象为注册LISTEN_CELL_LOCATION的对象,需要的permission名称为ACCESS_COARSE_LOCATION。
        location.requestLocationUpdate();
        
/**
         * 获取数据活动状态
         * 
         * DATA_ACTIVITY_IN 数据连接状态:活动,正在接受数据
         * DATA_ACTIVITY_OUT 数据连接状态:活动,正在发送数据
         * DATA_ACTIVITY_INOUT 数据连接状态:活动,正在接受和发送数据
         * DATA_ACTIVITY_NONE 数据连接状态:活动,但无数据发送和接受
         
*/
        tm.getDataActivity();
        
/**
         * 获取数据连接状态
         * 
         * DATA_CONNECTED 数据连接状态:已连接
         * DATA_CONNECTING 数据连接状态:正在连接
         * DATA_DISCONNECTED 数据连接状态:断开
         * DATA_SUSPENDED 数据连接状态:暂停
         
*/
        tm.getDataState();
        
/**
         * 返回当前移动终端的唯一标识
         * 
         * 如果是GSM网络,返回IMEI;如果是CDMA网络,返回MEID
         
*/
        tm.getDeviceId();
        
//返回移动终端的软件版本,例如:GSM手机的IMEI/SV码。
        tm.getDeviceSoftwareVersion();
        
//返回手机号码,对于GSM网络来说即MSISDN
        tm.getLine1Number();
        
//返回当前移动终端附近移动终端的信息
        List<NeighboringCellInfo> infos=tm.getNeighboringCellInfo();
        
for(NeighboringCellInfo info:infos){
            
//获取邻居小区号
            int cid=info.getCid();
            
//获取邻居小区LAC,LAC: 位置区域码。为了确定移动台的位置,每个GSM/PLMN的覆盖区都被划分成许多位置区,LAC则用于标识不同的位置区。
            info.getLac();
            info.getNetworkType();
            info.getPsc();
            
//获取邻居小区信号强度  
            info.getRssi();
        }
        
//返回ISO标准的国家码,即国际长途区号
        tm.getNetworkCountryIso();
        
//返回MCC+MNC代码 (SIM卡运营商国家代码和运营商网络代码)(IMSI)
        tm.getNetworkOperator();
        
//返回移动网络运营商的名字(SPN)
        tm.getNetworkOperatorName();
        
/**
         * 获取网络类型
         * 
         * 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
         * 
         * 在中国,联通的3G为UMTS或HSDPA,移动和联通的2G为GPRS或EGDE,电信的2G为CDMA,电信的3G为EVDO
         
*/
        tm.getNetworkType();
        
/**
         * 返回移动终端的类型
         * 
         * PHONE_TYPE_CDMA 手机制式为CDMA,电信
         * PHONE_TYPE_GSM 手机制式为GSM,移动和联通
         * PHONE_TYPE_NONE 手机制式未知
         
*/
        tm.getPhoneType();
        
//返回SIM卡提供商的国家代码
        tm.getSimCountryIso();
        
//返回MCC+MNC代码 (SIM卡运营商国家代码和运营商网络代码)(IMSI)
        tm.getSimOperator();
        tm.getSimOperatorName();
        
//返回SIM卡的序列号(IMEI)
        tm.getSimSerialNumber();
        
/**
         * 返回移动终端
         * 
         * 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解锁
         * SIM_STATE_READY SIM卡可用
         * SIM_STATE_UNKNOWN SIM卡未知
         
*/
        tm.getSimState();
        
//返回用户唯一标识,比如GSM网络的IMSI编号
        tm.getSubscriberId();
        
//获取语音信箱号码关联的字母标识。 
        tm.getVoiceMailAlphaTag();
        
//返回语音邮件号码
        tm.getVoiceMailNumber();
        tm.hasIccCard();
        
//返回手机是否处于漫游状态
        tm.isNetworkRoaming();
        
// tm.listen(PhoneStateListener listener, int events) ;
        
        
//解释:
        
//IMSI是国际移动用户识别码的简称(International Mobile Subscriber Identity)
        
//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

        
//IMEI是International Mobile Equipment Identity (国际移动设备标识)的简称
        
//IMEI由15位数字组成的”电子串号”,它与每台手机一一对应,而且该码是全世界唯一的
        
//其组成为:
        
//1. 前6位数(TAC)是”型号核准号码”,一般代表机型
        
//2. 接着的2位数(FAC)是”最后装配号”,一般代表产地
        
//3. 之后的6位数(SNR)是”串号”,一般代表生产顺序号
        
//4. 最后1位数(SP)通常是”0″,为检验码,目前暂备用
    }
}

 

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 手机qq注册号码忘了怎么办 原创头条号被限制推荐了怎么办 为什么打开app有广告怎么办 苹果手机浏览器总是弹出广告怎么办 手机上打开页面出现广告怎么办 电脑下面的任务栏变宽了怎么办 酷派手机总是出现广告怎么办 电脑弹出的热点新闻关闭不了怎么办 京东老是弹广告怎么办 电脑右下角出现无法显示网页怎么办 电脑右下角广告关不了怎么办 qq邮箱被冻结了怎么办 手机qq群自动发广告怎么办 济宁学院考研和上课冲突怎么办 考研但是大四上课多怎么办 试管促排卵泡少怎么办 京东退货卖家拒收怎么办 京东退货被卖家拒收怎么办 期货平台跑路了怎么办 浮云牧场没房了怎么办 融资股票停牌了怎么办 买入的股票停牌怎么办 淘宝抢到便宜货老板不发货怎么办 微信代购买到假货了怎么办 微信代购收到假货怎么办 苹果商店下载很慢怎么办 谷歌商店下载东西慢怎么办 买家说少发货了怎么办 人肉代购被海关扣了怎么办 韩国代购被海关扣了怎么办 爱奇艺开通自动续费忘了账号怎么办 小米手机云储存空间不足怎么办 路由器被黑了打不开网页怎么办 致人轻伤跑了怎么办 轻伤对方要30万怎么办 老公用老婆的钱怎么办 想注册个公司要怎么办 域名续费不知道找谁怎么办 代收快递弄丢了怎么办 货到付款的快递人不在怎么办 快递送货上门人不在怎么办