Usage of TelephonyManager API


  •  
  • package com.water.activity;
  •  
  • import java.util.List;
  •  
  • import android.app.Activity;
  • import android.os.Bundle;
  • import android.telephony.CellLocation;
  • import android.telephony.NeighboringCellInfo;
  • import android.telephony.TelephonyManager;
  • import android.util.Log;
  •  
  • public class MyList extends Activity {
  •  
  •         /**
  •          * android API中的TelephonyManager对象,可以取得SIM卡中的信息
  •          */
  •         private TelephonyManager telMgr;
  •  
  •         @Override
  •         public void onCreate(Bundle savedInstanceState) {
  •                 super.onCreate(savedInstanceState);
  •                 setContentView(R.layout.main);
  •  
  •                 telMgr = (TelephonyManager) getSystemService(TELEPHONY_SERVICE);
  •  
  •                 if (telMgr.getSimState() == telMgr.SIM_STATE_READY) {
  •                         Log.i("MyList", "良好");
  •                 } else if (telMgr.getSimState() == telMgr.SIM_STATE_ABSENT) {
  •                         Log.i("MyList", "无SIM卡");
  •                 } else {
  •                         Log.i("MyList", "SIM卡被锁定或未知的状态");
  •                 }
  •  
  •                 Log.i("MyList", "电话状态[0 无活动/1 响铃/2 摘机]:" + getCallState());
  •                 Log.i("MyList", "电话方位:" + getCellLocation());
  •                 Log.i("MyList", "唯一的设备ID:" + getDeviceId());
  •                 Log.i("MyList", "设备的软件版本号:" + getDeviceSoftwareVersion());
  •                 Log.i("MyList", "手机号:" + getLine1Number());
  •                 Log.i("MyList", "附近的电话的信息:" + getNeighboringCellInfo());
  •                 Log.i("MyList", "获取ISO标准的国家码,即国际长途区号:" + getNetworkCountryIso());
  •                 Log.i("MyList", "MCC+MNC:" + getNetworkOperator());
  •                 Log.i("MyList", "(当前已注册的用户)的名字:" + getNetworkOperatorName());
  •                 Log.i("MyList", "当前使用的网络类型:" + getNetworkType());
  •                 Log.i("MyList", "手机类型:" + getPhoneType());
  •                 Log.i("MyList", "SIM卡的国家码:" + getSimCountryIso());
  •                 Log.i("MyList", "获取SIM卡提供的移动国家码和移动网络码.5或6位的十进制数字:" + getSimOperator());
  •                 Log.i("MyList", "服务商名称:" + getSimOperatorName());
  •                 Log.i("MyList", "SIM卡的序列号:" + getSimSerialNumber());
  •                 Log.i("MyList", "SIM的状态信息:" + getSimState());
  •                 Log.i("MyList", "唯一的用户ID:" + getSubscriberId());
  •                 Log.i("MyList", "取得和语音邮件相关的标签,即为识别符:" + getVoiceMailAlphaTag());
  •                 Log.i("MyList", "获取语音邮件号码:" + getVoiceMailNumber());
  •                 Log.i("MyList", "ICC卡是否存在:" + hasIccCard());
  •                 Log.i("MyList", "是否漫游:" + isNetworkRoaming());
  •                 Log.i("MyList", "获取数据活动状态:" + getDataActivity());
  •                 Log.i("MyList", "获取数据连接状态:" + getDataState());
  •  
  •                 // telMgr.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″,为检验码,目前暂备用
  •         }
  •  
  •         /**
  •          * 电话状态:<br/>
  •          * CALL_STATE_IDLE 无任何状态时<br/>
  •          * CALL_STATE_OFFHOOK 接起电话时<br/>
  •          * CALL_STATE_RINGING 电话进来时
  •          * 
  •          * @return
  •          */
  •         private int getCallState() {
  •                 return telMgr.getCallState();
  •         }
  •  
  •         /**
  •          * 返回当前移动终端的位置 <br/>
  •          * 
  •          * @return
  •          */
  •         private CellLocation getCellLocation() {
  •                 CellLocation location = telMgr.getCellLocation();
  •  
  •                 // 请求位置更新,如果更新将产生广播,接收对象为注册LISTEN_CELL_LOCATION的对象,需要的permission名称为ACCESS_COARSE_LOCATION。
  •                 // location.requestLocationUpdate();
  •  
  •                 return location;
  •         }
  •  
  •         /**
  •          * 唯一的设备ID:<br/>
  •          * 如果是GSM网络,返回IMEI;如果是CDMA网络,返回MEID<br/>
  •          * 需要权限:android.permission.READ_PHONE_STATE
  •          * 
  •          * @return null if device ID is not available.
  •          */
  •         private String getDeviceId() {
  •                 return telMgr.getDeviceId();
  •         }
  •  
  •    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值