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

2018-12-25  本文已影响0人  longshuai

双卡的时候,用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;
    }
上一篇 下一篇

猜你喜欢

热点阅读