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)絡連接打開或者關閉的實現(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)改變的方法
相關文章
Android應用開發(fā)中使用GridView網(wǎng)格布局的代碼示例
GridView布局比較基礎,可以取代已經(jīng)逐漸淡出人們視線的TableLayout,這里我們就來看一下Android應用開發(fā)中使用GridView網(wǎng)格布局的代碼示例:2016-06-06
Android Studio連接MySql實現(xiàn)登錄注冊(附源代碼)
登錄注冊是常用的一個功能,正好今天用android studio 做一個類似于這樣的登錄軟件,需要的朋友們下面隨著小編來一起學習學習吧2021-05-05
Android webveiw 出現(xiàn)棧錯誤解決辦法
這篇文章主要介紹了Android webveiw 出現(xiàn)棧錯誤解決辦法的相關資料,出現(xiàn)java.lang.UnsupportedOperationException: For security reasons, WebView is not allowed in privileged processes,這里提供解決辦法,需要的朋友可以參考下2017-08-08
Android實現(xiàn)狀態(tài)欄白底黑字效果示例代碼
這篇文章主要介紹了Android實現(xiàn)狀態(tài)欄白底黑字效果的相關資料,實現(xiàn)后的效果非常適合日常開發(fā)中使用,文中給出了詳細的示例代碼供大家參考學習,需要的朋友們下面隨著小編來一起學習學習吧。2017-10-10
Android獲取系統(tǒng)儲存以及內(nèi)存信息的方法(一)
這篇文章主要為大家詳細介紹了Android獲取系統(tǒng)儲存以及內(nèi)存信息的方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-10-10
自定義Toast工具類ToastUtil防止多次點擊時Toast不消失的方法
下面小編就為大家?guī)硪黄远xToast工具類ToastUtil防止多次點擊時Toast不消失的方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-04-04
Android?Studio實現(xiàn)簡易計算器App?(Java語言版)
這篇文章主要為大家詳細介紹了Android?Studio實現(xiàn)簡易計算器App,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-05-05

