Android編程獲取網(wǎng)絡(luò)連接方式及判斷手機(jī)卡所屬運(yùn)營商的方法
本文實(shí)例講述了Android編程獲取網(wǎng)絡(luò)連接方式及判斷手機(jī)卡所屬運(yùn)營商的方法。分享給大家供大家參考,具體如下:
問題:項(xiàng)目中寫的網(wǎng)絡(luò)模塊,感覺有點(diǎn)亂:兩套代碼 --模擬器、真機(jī),維護(hù)起來十分麻煩。
解決辦法:代碼自動(dòng)去檢查到那種網(wǎng)絡(luò)環(huán)境,然后調(diào)用不同的聯(lián)網(wǎng)方式。
查看了模擬器上默認(rèn)的接入點(diǎn):移動(dòng)網(wǎng)絡(luò) -- APN = "internet"
1、通過獲取apn的名稱,來判斷網(wǎng)絡(luò)
// 獲取Mobile網(wǎng)絡(luò)下的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 都是中國電信定制機(jī)接入點(diǎn)名稱,中國電信的接入點(diǎn):Net、Wap都采用Net即非代理方式聯(lián)網(wǎng)即可 //internet 是模擬器上模擬接入點(diǎn)名稱 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{ //適配中國電信定制機(jī),如海信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方式下獲取當(dāng)前的網(wǎng)絡(luò)連接方式,代理或非代理 * */ 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; } /** * 獲取手機(jī)卡類型,移動(dòng)、聯(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")) { // 中國移動(dòng) } else if (iNumeric.equals("46001")) { // 中國聯(lián)通 } else if (iNumeric.equals("46003")) { // 中國電信 } } }
希望本文所述對(duì)大家Android程序設(shè)計(jì)有所幫助。
- Android 實(shí)時(shí)監(jiān)測(cè)(監(jiān)聽)網(wǎng)絡(luò)連接狀態(tài)變化
- Android中監(jiān)聽判斷網(wǎng)絡(luò)連接狀態(tài)的方法
- Android中監(jiān)聽系統(tǒng)網(wǎng)絡(luò)連接打開或者關(guān)閉的實(shí)現(xiàn)代碼
- Android 廣播監(jiān)聽網(wǎng)絡(luò)狀態(tài)詳解及實(shí)例代碼
- Android網(wǎng)絡(luò)狀態(tài)實(shí)時(shí)監(jiān)聽實(shí)例代碼(二)
- Android 網(wǎng)絡(luò)狀態(tài)實(shí)時(shí)監(jiān)聽代碼實(shí)例(一)
- Android編程判斷是否連接網(wǎng)絡(luò)的方法【W(wǎng)iFi及3G判斷】
- Android中判斷網(wǎng)絡(luò)是否連接實(shí)例詳解
- Android編程判斷網(wǎng)絡(luò)連接是否可用的方法
- android檢測(cè)網(wǎng)絡(luò)連接狀態(tài)示例講解
- Android編程監(jiān)聽網(wǎng)絡(luò)連接狀態(tài)改變的方法
相關(guān)文章
Android項(xiàng)目實(shí)戰(zhàn)之百度地圖地點(diǎn)簽到功能
這篇文章主要介紹了Android項(xiàng)目實(shí)戰(zhàn)之百度地圖地點(diǎn)簽到功能,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-04-04Android應(yīng)用開發(fā)中使用GridView網(wǎng)格布局的代碼示例
GridView布局比較基礎(chǔ),可以取代已經(jīng)逐漸淡出人們視線的TableLayout,這里我們就來看一下Android應(yīng)用開發(fā)中使用GridView網(wǎng)格布局的代碼示例:2016-06-06Android Studio連接MySql實(shí)現(xiàn)登錄注冊(cè)(附源代碼)
登錄注冊(cè)是常用的一個(gè)功能,正好今天用android studio 做一個(gè)類似于這樣的登錄軟件,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-05-05Android webveiw 出現(xiàn)棧錯(cuò)誤解決辦法
這篇文章主要介紹了Android webveiw 出現(xiàn)棧錯(cuò)誤解決辦法的相關(guān)資料,出現(xiàn)java.lang.UnsupportedOperationException: For security reasons, WebView is not allowed in privileged processes,這里提供解決辦法,需要的朋友可以參考下2017-08-08Android實(shí)現(xiàn)狀態(tài)欄白底黑字效果示例代碼
這篇文章主要介紹了Android實(shí)現(xiàn)狀態(tài)欄白底黑字效果的相關(guān)資料,實(shí)現(xiàn)后的效果非常適合日常開發(fā)中使用,文中給出了詳細(xì)的示例代碼供大家參考學(xué)習(xí),需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。2017-10-10Android獲取系統(tǒng)儲(chǔ)存以及內(nèi)存信息的方法(一)
這篇文章主要為大家詳細(xì)介紹了Android獲取系統(tǒng)儲(chǔ)存以及內(nèi)存信息的方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-10-10自定義Toast工具類ToastUtil防止多次點(diǎn)擊時(shí)Toast不消失的方法
下面小編就為大家?guī)硪黄远xToast工具類ToastUtil防止多次點(diǎn)擊時(shí)Toast不消失的方法。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-04-04Android?Studio實(shí)現(xiàn)簡易計(jì)算器App?(Java語言版)
這篇文章主要為大家詳細(xì)介紹了Android?Studio實(shí)現(xiàn)簡易計(jì)算器App,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-05-05