当前位置: 移动技术网 > IT编程>移动开发>Android > Android中TelephonyManager类的方法实例分析

Android中TelephonyManager类的方法实例分析

2019年07月24日  | 移动技术网IT编程  | 我要评论

521小说网,湘潭符咏梅,平板地带

本文实例讲述了android中telephonymanager类的方法。分享给大家供大家参考。具体如下:

telephonymanager类主要提供了一系列用于访问与手机通讯相关的状态和信息的get方法。其中包括手机sim的状态和信息、电信网络的状态及手机用户的信息。在应用程序中可以使用这些get方法获取相关数据。

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

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

package com.ljq.activity;
import java.util.list;
import android.app.activity;
import android.content.context;
import android.os.bundle;
import android.telephony.celllocation;
import android.telephony.neighboringcellinfo;
import android.telephony.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″,为检验码,目前暂备用
  }
}

希望本文所述对大家的android程序设计有所帮助。

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网