判斷手機當前流量卡是什么運營商的實現

雙卡的時候,用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;
    }
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容