美文网首页
判断手机当前流量卡是什么运营商的实现

判断手机当前流量卡是什么运营商的实现

作者: longshuai | 来源:发表于2018-12-25 17:14 被阅读0次

    双卡的时候,用TelephonyManager的getSimOperatorName拿到的是默认打电话的运营商名称,这api有点坑。

    注意:
    getNetworkOperator 不是获取上网卡运营商
    getSimOperatorName 不是获取上网卡运营商的名称

    官方文档只支持5.1及其之后的系统提供双卡API。对于之前的系统版本,就无能为力了。

    1、5.0及其之前 android.os.Build.VERSION.SDK_INT<=21
    这部分放弃,将其归入没有获取到系统权限的一样,当做读不出运营商看待。

    2、5.1及其之后 android.os.Build.VERSION.SDK_INT>=22
    精准获取上网卡运营商的调用如下:

    public static int getCurrentCarrierType(Context context) {
            if (android.os.Build.VERSION.SDK_INT < android.os.Build.VERSION_CODES.LOLLIPOP_MR1) {
                return -1;
            }
            if (context == null) {
                return -1;
            }
            TelephonyManager telMag = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
            if (telMag == null) {
                return -1;
            }
            return parseOperatorCode(telMag.getSimOperator());
        }
    
        public static int parseOperatorCode(String operatorCode) {
            if (operatorCode == null || "".equals(operatorCode)) return -1;
            switch (operatorCode) {
                case "46000":
                case "46002":
                case "46007":
                case "46008":
                    return MOBILE;
                case "46001":
                case "46006":
                case "46009":
                    return UNICOM;
                case "46003":
                case "46005":
                case "46011":
                    return TELECOM;
            }
            return -1;
        }
    

    相关文章

      网友评论

          本文标题:判断手机当前流量卡是什么运营商的实现

          本文链接:https://www.haomeiwen.com/subject/qmoflqtx.html