Android-获取sim卡状态

来源:互联网 发布:重庆网站外包优化 编辑:程序博客网 时间:2024/05/19 02:45

在工模测试中需要频繁读取sim的状态,包括是否插入sim卡、运营商信息、sim卡类型等,方法如下。

/*读取sim卡*/public String readSIMCard() {            TelephonyManager tm = (TelephonyManager)this.getSystemService(TELEPHONY_SERVICE);//取得相关系统服务        StringBuffer sb = new StringBuffer();        switch(tm.getSimState()){ //getSimState()取得sim的状态  有下面6中状态                case TelephonyManager.SIM_STATE_ABSENT :sb.append("无卡");break;                 case TelephonyManager.SIM_STATE_UNKNOWN :sb.append("未知状态");break;                case TelephonyManager.SIM_STATE_NETWORK_LOCKED :sb.append("需要NetworkPIN解锁");break;                case TelephonyManager.SIM_STATE_PIN_REQUIRED :sb.append("需要PIN解锁");break;                case TelephonyManager.SIM_STATE_PUK_REQUIRED :sb.append("需要PUK解锁");break;                case TelephonyManager.SIM_STATE_READY :sb.append("良好");break;        }        if(tm.getSimSerialNumber()!=null){                sb.append("@" + tm.getSimSerialNumber().toString());        }else{                sb.append("@无法取得SIM卡号");        }        if(tm.getSimOperator().equals("")){                sb.append("@无法取得供货商代码");        }else{                sb.append("@" + tm.getSimOperator().toString());        }        if(tm.getSimOperatorName().equals("")){                sb.append("@无法取得供货商");        }else{                sb.append("@" + tm.getSimOperatorName().toString());        }        if(tm.getSimCountryIso().equals("")){                sb.append("@无法取得国籍");        }else{                sb.append("@" + tm.getSimCountryIso().toString());        }        if (tm.getNetworkOperator().equals("")) {                sb.append("@无法取得网络运营商");        } else {                sb.append("@" + tm.getNetworkOperator());        }        if (tm.getNetworkOperatorName().equals("")) {                sb.append("@无法取得网络运营商名称");        } else {                sb.append("@" + tm.getNetworkOperatorName());        }        if (tm.getNetworkType() == 0) {                sb.append("@无法取得网络类型");        } else {                sb.append("@" + tm.getNetworkType());        }        return sb.toString();    }/*获取sim卡信息*/private String getSimType() {        // 获得SIMType           String simType = "";        // 获得系统服务,从而取得sim数据           TelephonyManager tm = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);         int type = tm.getNetworkType();        System.out.println(Contants.DEBUG+" NetWorkType:"+type);        //Test1:我的手机卡是联通USIM卡,在这儿取出来的值为10-------NETWORK_TYPE_HSPA        //Test2:中国移动 神州行OTA 2-----NETWORK_TYPE_EDGE        //Test3:中国移动 动感地带OTA 2-----NETWORK_TYPE_EDGE        //...        switch (type) {            case TelephonyManager.NETWORK_TYPE_UNKNOWN://0                simType= "UNKOWN";                break;            case TelephonyManager.NETWORK_TYPE_GPRS://1                simType= "SIM";                break;            case TelephonyManager.NETWORK_TYPE_EDGE://2                simType= "SIM";                break;            case TelephonyManager.NETWORK_TYPE_UMTS://3                simType= "USIM";                break;            case TelephonyManager.NETWORK_TYPE_CDMA://4                simType= "Either IS95A or IS95B Card";                break;            case TelephonyManager.NETWORK_TYPE_EVDO_0://5                simType= "EVDO revision 0 Card";                break;            case TelephonyManager.NETWORK_TYPE_EVDO_A://6                simType= "EVDO revision A Card";                break;            case TelephonyManager.NETWORK_TYPE_1xRTT://7                simType= "1xRTT Card";                break;            case TelephonyManager.NETWORK_TYPE_HSDPA://8                simType= "HSDPA Card";                break;            case TelephonyManager.NETWORK_TYPE_HSUPA://9                simType= "HSUPA Card";                break;            case TelephonyManager.NETWORK_TYPE_HSPA://10                simType= "USIM";                break;        }        System.out.println(Contants.DEBUG+" sim type :"+simType);        return simType;    }
0 0
原创粉丝点击