zoukankan      html  css  js  c++  java
  • Android 读取SIM卡参数

      1. package com.water.activity;  
      2.   
      3. import java.util.List;  
      4.   
      5. import android.app.Activity;  
      6. import android.os.Bundle;  
      7. import android.telephony.CellLocation;  
      8. import android.telephony.NeighboringCellInfo;  
      9. import android.telephony.TelephonyManager;  
      10. import android.util.Log;  
      11.   
      12. public class MyList extends Activity {  
      13.   
      14.     /** 
      15.      * android API中的TelephonyManager对象,可以取得SIM卡中的信息 
      16.      */  
      17.     private TelephonyManager telMgr;  
      18.   
      19.     @Override  
      20.     public void onCreate(Bundle savedInstanceState) {  
      21.         super.onCreate(savedInstanceState);  
      22.         setContentView(R.layout.main);  
      23.   
      24.         telMgr = (TelephonyManager) getSystemService(TELEPHONY_SERVICE);  
      25.   
      26.         if (telMgr.getSimState() == telMgr.SIM_STATE_READY) {  
      27.             Log.i("MyList""良好");  
      28.         } else if (telMgr.getSimState() == telMgr.SIM_STATE_ABSENT) {  
      29.             Log.i("MyList""无SIM卡");  
      30.         } else {  
      31.             Log.i("MyList""SIM卡被锁定或未知的状态");  
      32.         }  
      33.   
      34.         Log.i("MyList""电话状态[0 无活动/1 响铃/2 摘机]:" + getCallState());  
      35.         Log.i("MyList""电话方位:" + getCellLocation());  
      36.         Log.i("MyList""唯一的设备ID:" + getDeviceId());  
      37.         Log.i("MyList""设备的软件版本号:" + getDeviceSoftwareVersion());  
      38.         Log.i("MyList""手机号:" + getLine1Number());  
      39.         Log.i("MyList""附近的电话的信息:" + getNeighboringCellInfo());  
      40.         Log.i("MyList""获取ISO标准的国家码,即国际长途区号:" + getNetworkCountryIso());  
      41.         Log.i("MyList""MCC+MNC:" + getNetworkOperator());  
      42.         Log.i("MyList""(当前已注册的用户)的名字:" + getNetworkOperatorName());  
      43.         Log.i("MyList""当前使用的网络类型:" + getNetworkType());  
      44.         Log.i("MyList""手机类型:" + getPhoneType());  
      45.         Log.i("MyList""SIM卡的国家码:" + getSimCountryIso());  
      46.         Log.i("MyList""获取SIM卡提供的移动国家码和移动网络码.5或6位的十进制数字:" + getSimOperator());  
      47.         Log.i("MyList""服务商名称:" + getSimOperatorName());  
      48.         Log.i("MyList""SIM卡的序列号:" + getSimSerialNumber());  
      49.         Log.i("MyList""SIM的状态信息:" + getSimState());  
      50.         Log.i("MyList""唯一的用户ID:" + getSubscriberId());  
      51.         Log.i("MyList""取得和语音邮件相关的标签,即为识别符:" + getVoiceMailAlphaTag());  
      52.         Log.i("MyList""获取语音邮件号码:" + getVoiceMailNumber());  
      53.         Log.i("MyList""ICC卡是否存在:" + hasIccCard());  
      54.         Log.i("MyList""是否漫游:" + isNetworkRoaming());  
      55.         Log.i("MyList""获取数据活动状态:" + getDataActivity());  
      56.         Log.i("MyList""获取数据连接状态:" + getDataState());  
      57.   
      58.         // telMgr.listen(PhoneStateListener listener, int events) ;  
      59.         // 解释:  
      60.         // IMSI是国际移动用户识别码的简称(International Mobile Subscriber Identity)  
      61.         // IMSI共有15位,其结构如下:  
      62.         // MCC+MNC+MIN  
      63.         // MCC:Mobile Country Code,移动国家码,共3位,中国为460;  
      64.         // MNC:Mobile NetworkCode,移动网络码,共2位  
      65.         // 在中国,移动的代码为电00和02,联通的代码为01,电信的代码为03  
      66.         // 合起来就是(也是Android手机中APN配置文件中的代码):  
      67.         // 中国移动:46000 46002  
      68.         // 中国联通:46001  
      69.         // 中国电信:46003  
      70.         // 举例,一个典型的IMSI号码为460030912121001  
      71.         // IMEI是International Mobile Equipment Identity (国际移动设备标识)的简称  
      72.         // IMEI由15位数字组成的”电子串号”,它与每台手机一一对应,而且该码是全世界唯一的  
      73.         // 其组成为:  
      74.         // 1. 前6位数(TAC)是”型号核准号码”,一般代表机型  
      75.         // 2. 接着的2位数(FAC)是”最后装配号”,一般代表产地  
      76.         // 3. 之后的6位数(SNR)是”串号”,一般代表生产顺序号  
      77.         // 4. 最后1位数(SP)通常是”0″,为检验码,目前暂备用  
      78.     }  
      79.   
      80.     /** 
      81.      * 电话状态:<br/> 
      82.      * CALL_STATE_IDLE 无任何状态时<br/> 
      83.      * CALL_STATE_OFFHOOK 接起电话时<br/> 
      84.      * CALL_STATE_RINGING 电话进来时 
      85.      *  
      86.      * @return 
      87.      */  
      88.     private int getCallState() {  
      89.         return telMgr.getCallState();  
      90.     }  
      91.   
      92.     /** 
      93.      * 返回当前移动终端的位置 <br/> 
      94.      *  
      95.      * @return 
      96.      */  
      97.     private CellLocation getCellLocation() {  
      98.         CellLocation location = telMgr.getCellLocation();  
      99.   
      100.         // 请求位置更新,如果更新将产生广播,接收对象为注册LISTEN_CELL_LOCATION的对象,需要的permission名称为ACCESS_COARSE_LOCATION。  
      101.         // location.requestLocationUpdate();  
      102.   
      103.         return location;  
      104.     }  
      105.   
      106.     /** 
      107.      * 唯一的设备ID:<br/> 
      108.      * 如果是GSM网络,返回IMEI;如果是CDMA网络,返回MEID<br/> 
      109.      * 需要权限:android.permission.READ_PHONE_STATE 
      110.      *  
      111.      * @return null if device ID is not available. 
      112.      */  
      113.     private String getDeviceId() {  
      114.         return telMgr.getDeviceId();  
      115.     }  
      116.   
      117.     /** 
      118.      * 返回移动终端的软件版本:<br/> 
      119.      * 例如:GSM手机的IMEI/SV码。<br/> 
      120.      *  
      121.      * @return null if the software version is not available. 
      122.      */  
      123.     private String getDeviceSoftwareVersion() {  
      124.         return telMgr.getDeviceSoftwareVersion();  
      125.     }  
      126.   
      127.     /** 
      128.      * 手机号:<br/> 
      129.      * 对于GSM网络来说即MSISDN 
      130.      *  
      131.      * @return null if it is unavailable. 
      132.      */  
      133.     private String getLine1Number() {  
      134.         return telMgr.getLine1Number();  
      135.     }  
      136.   
      137.     /** 
      138.      * 返回当前移动终端附近移动终端的信息:<br/> 
      139.      * 类型:List<NeighboringCellInfo><br/> 
      140.      * 需要权限:android.Manifest.permission#ACCESS_COARSE_UPDATES 
      141.      *  
      142.      * @return 
      143.      */  
      144.     private List<NeighboringCellInfo> getNeighboringCellInfo() {  
      145.         // List<NeighboringCellInfo> infos = telMgr.getNeighboringCellInfo();  
      146.         // for (NeighboringCellInfo info : infos) {  
      147.         // // 获取邻居小区号  
      148.         // int cid = info.getCid();  
      149.         //  
      150.         // // 获取邻居小区LAC,LAC:  
      151.         // // 位置区域码。为了确定移动台的位置,每个GSM/PLMN的覆盖区都被划分成许多位置区,LAC则用于标识不同的位置区。  
      152.         // info.getLac();  
      153.         // info.getNetworkType();  
      154.         // info.getPsc();  
      155.         //  
      156.         // // 获取邻居小区信号强度  
      157.         // info.getRssi();  
      158.         // }  
      159.   
      160.         return telMgr.getNeighboringCellInfo();  
      161.     }  
      162.   
      163.     /** 
      164.      * 获取ISO标准的国家码,即国际长途区号。<br/> 
      165.      * 注意:仅当用户已在网络注册后有效。<br/> 
      166.      * 在CDMA网络中结果也许不可靠。<br/> 
      167.      *  
      168.      * @return 
      169.      */  
      170.     private String getNetworkCountryIso() {  
      171.         return telMgr.getNetworkCountryIso();  
      172.     }  
      173.   
      174.     /** 
      175.      * MCC+MNC(mobile country code + mobile network code)<br/> 
      176.      * 注意:仅当用户已在网络注册时有效。<br/> 
      177.      * 在CDMA网络中结果也许不可靠。<br/> 
      178.      *  
      179.      * @return 
      180.      */  
      181.     private String getNetworkOperator() {  
      182.         return telMgr.getNetworkOperator();  
      183.     }  
      184.   
      185.     /** 
      186.      * 按照字母次序的current registered operator(当前已注册的用户)的名字<br/> 
      187.      * 注意:仅当用户已在网络注册时有效。<br/> 
      188.      * 在CDMA网络中结果也许不可靠。 
      189.      *  
      190.      * @return 
      191.      */  
      192.     private String getNetworkOperatorName() {  
      193.         return telMgr.getNetworkOperatorName();  
      194.     }  
      195.   
      196.     /** 
      197.      * 当前使用的网络类型:<br/> 
      198.      * NETWORK_TYPE_UNKNOWN 网络类型未知 0<br/> 
      199.      * NETWORK_TYPE_GPRS GPRS网络 1<br/> 
      200.      * NETWORK_TYPE_EDGE EDGE网络 2<br/> 
      201.      * NETWORK_TYPE_UMTS UMTS网络 3<br/> 
      202.      * NETWORK_TYPE_HSDPA HSDPA网络 8<br/> 
      203.      * NETWORK_TYPE_HSUPA HSUPA网络 9<br/> 
      204.      * NETWORK_TYPE_HSPA HSPA网络 10<br/> 
      205.      * NETWORK_TYPE_CDMA CDMA网络,IS95A 或 IS95B. 4<br/> 
      206.      * NETWORK_TYPE_EVDO_0 EVDO网络, revision 0. 5<br/> 
      207.      * NETWORK_TYPE_EVDO_A EVDO网络, revision A. 6<br/> 
      208.      * NETWORK_TYPE_1xRTT 1xRTT网络 7<br/> 
      209.      * 在中国,联通的3G为UMTS或HSDPA,移动和联通的2G为GPRS或EGDE,电信的2G为CDMA,电信的3G为EVDO<br/> 
      210.      *  
      211.      * @return 
      212.      */  
      213.     private int getNetworkType() {  
      214.         return telMgr.getNetworkType();  
      215.     }  
      216.   
      217.     /** 
      218.      * 返回移动终端的类型:<br/> 
      219.      * PHONE_TYPE_CDMA 手机制式为CDMA,电信<br/> 
      220.      * PHONE_TYPE_GSM 手机制式为GSM,移动和联通<br/> 
      221.      * PHONE_TYPE_NONE 手机制式未知<br/> 
      222.      *  
      223.      * @return 
      224.      */  
      225.     private int getPhoneType() {  
      226.         return telMgr.getPhoneType();  
      227.     }  
      228.   
      229.     /** 
      230.      * 获取ISO国家码,相当于提供SIM卡的国家码。 
      231.      *  
      232.      * @return Returns the ISO country code equivalent for the SIM provider's 
      233.      *         country code. 
      234.      */  
      235.     private String getSimCountryIso() {  
      236.         return telMgr.getSimCountryIso();  
      237.     }  
      238.   
      239.     /** 
      240.      * 获取SIM卡提供的移动国家码和移动网络码.5或6位的十进制数字.<br/> 
      241.      * SIM卡的状态必须是 SIM_STATE_READY(使用getSimState()判断). 
      242.      *  
      243.      * @return Returns the MCC+MNC (mobile country code + mobile network code) 
      244.      *         of the provider of the SIM. 5 or 6 decimal digits. 
      245.      */  
      246.     private String getSimOperator() {  
      247.         return telMgr.getSimOperator();  
      248.     }  
      249.   
      250.     /** 
      251.      * 服务商名称:<br/> 
      252.      * 例如:中国移动、联通<br/> 
      253.      * SIM卡的状态必须是 SIM_STATE_READY(使用getSimState()判断). 
      254.      *  
      255.      * @return 
      256.      */  
      257.     private String getSimOperatorName() {  
      258.         return telMgr.getSimOperatorName();  
      259.     }  
      260.   
      261.     /** 
      262.      * SIM卡的序列号:<br/> 
      263.      * 需要权限:READ_PHONE_STATE 
      264.      *  
      265.      * @return 
      266.      */  
      267.     private String getSimSerialNumber() {  
      268.         return telMgr.getSimSerialNumber();  
      269.     }  
      270.   
      271.     /** 
      272.      * SIM的状态信息:<br/> 
      273.      * SIM_STATE_UNKNOWN 未知状态 0<br/> 
      274.      * SIM_STATE_ABSENT 没插卡 1<br/> 
      275.      * SIM_STATE_PIN_REQUIRED 锁定状态,需要用户的PIN码解锁 2<br/> 
      276.      * SIM_STATE_PUK_REQUIRED 锁定状态,需要用户的PUK码解锁 3<br/> 
      277.      * SIM_STATE_NETWORK_LOCKED 锁定状态,需要网络的PIN码解锁 4<br/> 
      278.      * SIM_STATE_READY 就绪状态 5 
      279.      *  
      280.      * @return 
      281.      */  
      282.     private int getSimState() {  
      283.         return telMgr.getSimState();  
      284.     }  
      285.   
      286.     /** 
      287.      * 唯一的用户ID:<br/> 
      288.      * 例如:IMSI(国际移动用户识别码) for a GSM phone.<br/> 
      289.      * 需要权限:READ_PHONE_STATE 
      290.      *  
      291.      * @return 
      292.      */  
      293.     private String getSubscriberId() {  
      294.         return telMgr.getSubscriberId();  
      295.     }  
      296.   
      297.     /** 
      298.      * 取得和语音邮件相关的标签,即为识别符<br/> 
      299.      * 需要权限:READ_PHONE_STATE 
      300.      *  
      301.      * @return 
      302.      */  
      303.     private String getVoiceMailAlphaTag() {  
      304.         return telMgr.getVoiceMailAlphaTag();  
      305.     }  
      306.   
      307.     /** 
      308.      * 获取语音邮件号码:<br/> 
      309.      * 需要权限:READ_PHONE_STATE 
      310.      *  
      311.      * @return 
      312.      */  
      313.     private String getVoiceMailNumber() {  
      314.         return telMgr.getVoiceMailNumber();  
      315.     }  
      316.   
      317.     /** 
      318.      * ICC卡是否存在 
      319.      *  
      320.      * @return 
      321.      */  
      322.     private boolean hasIccCard() {  
      323.         return telMgr.hasIccCard();  
      324.     }  
      325.   
      326.     /** 
      327.      * 是否漫游:(在GSM用途下) 
      328.      *  
      329.      * @return 
      330.      */  
      331.     private boolean isNetworkRoaming() {  
      332.         return telMgr.isNetworkRoaming();  
      333.     }  
      334.   
      335.     /** 
      336.      * 获取数据活动状态<br/> 
      337.      * DATA_ACTIVITY_IN 数据连接状态:活动,正在接受数据<br/> 
      338.      * DATA_ACTIVITY_OUT 数据连接状态:活动,正在发送数据<br/> 
      339.      * DATA_ACTIVITY_INOUT 数据连接状态:活动,正在接受和发送数据<br/> 
      340.      * DATA_ACTIVITY_NONE 数据连接状态:活动,但无数据发送和接受<br/> 
      341.      *  
      342.      * @return 
      343.      */  
      344.     private int getDataActivity() {  
      345.         return telMgr.getDataActivity();  
      346.     }  
      347.   
      348.     /** 
      349.      * 获取数据连接状态<br/> 
      350.      * DATA_CONNECTED 数据连接状态:已连接<br/> 
      351.      * DATA_CONNECTING 数据连接状态:正在连接<br/> 
      352.      * DATA_DISCONNECTED 数据连接状态:断开<br/> 
      353.      * DATA_SUSPENDED 数据连接状态:暂停<br/> 
      354.      *  
      355.      * @return 
      356.      */  
      357.     private int getDataState() {  
      358.         return telMgr.getDataState();  
      359.     }  
      360.   

  • 相关阅读:
    移动端a标签点击图片有阴影处理
    sublime vue 语法高亮插件安装
    mongodb 命令
    MongoDB给数据库创建用户
    windows32位系统 安装MongoDB
    ES6之主要知识点(十)Proxy
    ES6之主要知识点(九)Set和Map
    ES6之主要知识点(八)Symbol
    ES6之主要知识点(七)对象
    Ueditor 1.4.3 插入表格后无边框无颜色,不能正常显示
  • 原文地址:https://www.cnblogs.com/Free-Thinker/p/3606447.html
Copyright © 2011-2022 走看看