博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

026、TelephonyManager的应用

Posted on 2013-09-27 21:57  mz_zyh  阅读(252)  评论(0编辑  收藏  举报
手机最主要的功能就是打电话,可以通过TelephonyManager提供的方法来获取SIM卡的状态和相关资料。
通过getSystemService(Context.TELEPHONY_SERVICE)取得TelephonyManager对象。
代码:
 
   /**
     * 获取SIM卡信息
     */
    private void loadTelephonyData() {
        //取得SIM卡状态
        items.add("SIM卡状态");
        switch (tm.getSimState()) {
        case TelephonyManager.SIM_STATE_READY:
            values.add("良好");
            break;
        case TelephonyManager.SIM_STATE_ABSENT:
            values.add("无SIM卡");
            break;
        default:
            values.add("SIM卡被锁定或未知的状态");
            break;
        }
        
        //获取SIM卡卡号
        items.add("SIM卡卡号");
        if(tm.getSimSerialNumber()==null){
            values.add("无法获取号码");
        }else{
            values.add(tm.getSimSerialNumber());
        }
        
        //取得SIM卡供货商代码
        items.add("SIM卡供货商代码");
        if("".equals(tm.getSimOperator())){
            values.add("无法获取供应商代码");
        }else{
            values.add(tm.getSimOperator());
        }
        
        //获取SIM卡供应商名称
        items.add("SIM卡供应商名称");
        if("".equals(tm.getSimOperatorName())){
            values.add("无法获取供应商名称");
        }else{
            values.add(tm.getSimOperatorName());
        }
        
        //获取SIM卡区域
        items.add("SIM卡区域");
        if("".equals(tm.getSimCountryIso())){
            values.add("无法获取SIM卡区域");
        }else{
            values.add(tm.getSimCountryIso());
        }
    }

 

 
 
AndroidManifest.xml本身必须要在Activity里设置读取电话状态的权限(Android.permission.READ_PHONE_STATE):
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>

 

 
上述程序以TelephonyManager.getSimState()方法来取得SIM卡的状态,可能出现的返回状态如下表:
常数名称 说明 常数值
SIM_STATE_ABSENT 手机内无SIM卡 1
SIM_STATE_NETWORK_LOCKED 需要Network PIN解锁 4
SIM_STATE_PIN_REQUIRED 需要SIM卡的PIN解锁 2
SIM_STATE_PUK_REQUIRED 需要SIM卡的PUK解锁 3
SIM_STATE_READY SIM卡已准备好 5
SIM_STATE_UNKNOWN 状态未知 0