Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android獲取運營商

Android獲取運營商

編輯:關於Android編程

今天接到一個新需求,要給服務器上送設備運營商名稱,之後我的第一反應是,umeng都無法精確統計運營商,我如何判斷上送具體的運營商呢?如下圖:

這裡寫圖片描述
這張圖裡反映了友盟統計到用戶手機的運營商名稱,這些名稱什麼樣子的都有。有什麼辦法精確判斷具體是什麼運營商呢?比如,只返回“中國移動”,“中國聯通”,“中國電信”。
我這裡解決的方案是通過設備的MCC/MNC代碼來判斷。
首先,我們要了解MCC/MNC是什麼,請看WIKI百科。通過閱讀,我們能夠知道,只要對比MCC/MNC編碼,就能知道具體是什麼運營商了。
其次,就是具體代碼了,如下:

/**
     * 返回運營商 需要加入權限  

     * 
     * @return 1,代表中國移動,2,代表中國聯通,3,代表中國電信,0,代表未知
     * @author [email protected]
     */
 public int getOperators(Context context) {
        // 移動設備網絡代碼(英語:Mobile Network Code,MNC)是與移動設備國家代碼(Mobile Country Code,MCC)(也稱為“MCC /
        // MNC”)相結合, 例如46000,前三位是MCC,後兩位是MNC 獲取手機服務商信息
        int OperatorsName = 0;
        String IMSI =  (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE).getSubscriberId();
        // IMSI號前面3位460是國家,緊接著後面2位00 運營商代碼
        System.out.println(IMSI);
        if (IMSI.startsWith("46000") || IMSI.startsWith("46002") || IMSI.startsWith("46007")) {
            OperatorsName = 1;
        } else if (IMSI.startsWith("46001") || IMSI.startsWith("46006")) {
            OperatorsName = 2;
        } else if (IMSI.startsWith("46003") || IMSI.startsWith("46005")) {
            OperatorsName = 3;
        }
        return OperatorsName;
    }

通過客戶端本地比對MCC/MNC確定運營商這種方式,本身我是不贊同的,我認為把MCC/MNC上送到服務器,由服務器判斷這才是最優方案。因為應用打好包分發出去,代碼就是死的,未來不可以擴展比對,但是服務器是可以動態的,隨時配置比對的MCC/MNC編碼。

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved