Android擷取電訊廠商,android電訊廠商

來源:互聯網
上載者:User

Android擷取電訊廠商,android電訊廠商

今天接到一個新需求,要給伺服器上送裝置電訊廠商名稱,之後我的第一反應是,umeng都無法精確統計電訊廠商,我如何判斷上送具體的電訊廠商呢?如:


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

/**     * 返回電訊廠商 需要加入許可權 <uses-permission android:name="android.permission.READ_PHONE_STATE"/> <BR>     *      * @return 1,代表中國移動,2,代表中國聯通,3,代表中國電信,0,代表未知     * @author youzc@yiche.com     */ 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編碼。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.