Android編程獲取網(wǎng)絡連接方式及判斷手機卡所屬運營商的方法
本文實例講述了Android編程獲取網(wǎng)絡連接方式及判斷手機卡所屬運營商的方法。分享給大家供大家參考,具體如下:
問題:項目中寫的網(wǎng)絡模塊,感覺有點亂:兩套代碼 --模擬器、真機,維護起來十分麻煩。
解決辦法:代碼自動去檢查到那種網(wǎng)絡環(huán)境,然后調(diào)用不同的聯(lián)網(wǎng)方式。
查看了模擬器上默認的接入點:移動網(wǎng)絡 -- APN = "internet"
1、通過獲取apn的名稱,來判斷網(wǎng)絡
// 獲取Mobile網(wǎng)絡下的cmwap、cmnet private int getCurrentApnInUse() { int type = NONET; Cursor cursor = context.getContentResolver().query(PREFERRED_APN_URI, new String[] { "_id", "apn", "type" }, null, null, null); cursor.moveToFirst(); int counts = cursor.getCount(); if(counts != 0){//適配平板外掛3G模塊情況 if (!cursor.isAfterLast()) { String apn = cursor.getString(1); //#777、ctnet 都是中國電信定制機接入點名稱,中國電信的接入點:Net、Wap都采用Net即非代理方式聯(lián)網(wǎng)即可 //internet 是模擬器上模擬接入點名稱 if (apn.equalsIgnoreCase("cmnet") || apn.equalsIgnoreCase("3gnet") || apn.equalsIgnoreCase("uninet") || apn.equalsIgnoreCase("#777") || apn.equalsIgnoreCase("ctnet") || apn.equalsIgnoreCase("internet")) { type = WIFIAndCMNET; } else if (apn.equalsIgnoreCase("cmwap") || apn.equalsIgnoreCase("3gwap") || apn.equalsIgnoreCase("uniwap")) { type = CMWAP; } }else{ //適配中國電信定制機,如海信EG968,上面方式獲取的cursor為空,所以換種方式 Cursor c = context.getContentResolver().query(PREFERRED_APN_URI,null, null, null, null); c.moveToFirst(); String user=c.getString(c.getColumnIndex("user")); if(user.equalsIgnoreCase("ctnet")){ type = WIFIAndCMNET; } c.close(); } }else{ type = WIFIAndCMNET;//平板外掛3G,采用非代理方式上網(wǎng) } cursor.close(); return type; }
2、直接獲取代理參數(shù):proxy 來判斷是否為代理
/** * MOBILE方式下獲取當前的網(wǎng)絡連接方式,代理或非代理 * */ public static String getCurrentApnInUse(Context context) { Cursor cursor = context.getContentResolver().query(PREFERRED_APN_URI, new String[] { "_id", "apn", "type", "proxy" }, null, null, null); cursor.moveToFirst(); if (cursor.isAfterLast()) { String apn = cursor.getString(3); if (apn == null) { apn = ""; } } return apn; } /** * 獲取手機卡類型,移動、聯(lián)通、電信 * */ private static int getMobileType(Context context) { int type = 0; TelephonyManager iPhoneManager = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE); String iNumeric = iPhoneManager.getSimOperator(); if (iNumeric.length() > 0) { if (iNumeric.equals("46000") || iNumeric.equals("46002")) { // 中國移動 } else if (iNumeric.equals("46001")) { // 中國聯(lián)通 } else if (iNumeric.equals("46003")) { // 中國電信 } } }
希望本文所述對大家Android程序設計有所幫助。
- Android 實時監(jiān)測(監(jiān)聽)網(wǎng)絡連接狀態(tài)變化
- Android中監(jiān)聽判斷網(wǎng)絡連接狀態(tài)的方法
- Android中監(jiān)聽系統(tǒng)網(wǎng)絡連接打開或者關(guān)閉的實現(xiàn)代碼
- Android 廣播監(jiān)聽網(wǎng)絡狀態(tài)詳解及實例代碼
- Android網(wǎng)絡狀態(tài)實時監(jiān)聽實例代碼(二)
- Android 網(wǎng)絡狀態(tài)實時監(jiān)聽代碼實例(一)
- Android編程判斷是否連接網(wǎng)絡的方法【W(wǎng)iFi及3G判斷】
- Android中判斷網(wǎng)絡是否連接實例詳解
- Android編程判斷網(wǎng)絡連接是否可用的方法
- android檢測網(wǎng)絡連接狀態(tài)示例講解
- Android編程監(jiān)聽網(wǎng)絡連接狀態(tài)改變的方法
相關(guān)文章
Android應用開發(fā)中使用GridView網(wǎng)格布局的代碼示例
GridView布局比較基礎,可以取代已經(jīng)逐漸淡出人們視線的TableLayout,這里我們就來看一下Android應用開發(fā)中使用GridView網(wǎng)格布局的代碼示例:2016-06-06Android Studio連接MySql實現(xiàn)登錄注冊(附源代碼)
登錄注冊是常用的一個功能,正好今天用android studio 做一個類似于這樣的登錄軟件,需要的朋友們下面隨著小編來一起學習學習吧2021-05-05Android webveiw 出現(xiàn)棧錯誤解決辦法
這篇文章主要介紹了Android webveiw 出現(xiàn)棧錯誤解決辦法的相關(guān)資料,出現(xiàn)java.lang.UnsupportedOperationException: For security reasons, WebView is not allowed in privileged processes,這里提供解決辦法,需要的朋友可以參考下2017-08-08Android實現(xiàn)狀態(tài)欄白底黑字效果示例代碼
這篇文章主要介紹了Android實現(xiàn)狀態(tài)欄白底黑字效果的相關(guān)資料,實現(xiàn)后的效果非常適合日常開發(fā)中使用,文中給出了詳細的示例代碼供大家參考學習,需要的朋友們下面隨著小編來一起學習學習吧。2017-10-10Android獲取系統(tǒng)儲存以及內(nèi)存信息的方法(一)
這篇文章主要為大家詳細介紹了Android獲取系統(tǒng)儲存以及內(nèi)存信息的方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-10-10自定義Toast工具類ToastUtil防止多次點擊時Toast不消失的方法
下面小編就為大家?guī)硪黄远xToast工具類ToastUtil防止多次點擊時Toast不消失的方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-04-04Android?Studio實現(xiàn)簡易計算器App?(Java語言版)
這篇文章主要為大家詳細介紹了Android?Studio實現(xiàn)簡易計算器App,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-05-05