編輯:關於Android編程
本文實例講述了Android編程獲取網絡連接方式及判斷手機卡所屬運營商的方法。分享給大家供大家參考,具體如下:
問題:項目中寫的網絡模塊,感覺有點亂:兩套代碼 --模擬器、真機,維護起來十分麻煩。
解決辦法:代碼自動去檢查到那種網絡環境,然後調用不同的聯網方式。
查看了模擬器上默認的接入點:移動網絡 -- APN = "internet"
1、通過獲取apn的名稱,來判斷網絡
// 獲取Mobile網絡下的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即非代理方式聯網即可 //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,采用非代理方式上網 } cursor.close(); return type; }
2、直接獲取代理參數:proxy 來判斷是否為代理
/** * MOBILE方式下獲取當前的網絡連接方式,代理或非代理 * */ 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; } /** * 獲取手機卡類型,移動、聯通、電信 * */ 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")) { // 中國聯通 } else if (iNumeric.equals("46003")) { // 中國電信 } } }
希望本文所述對大家Android程序設計有所幫助。
老早就使用了,但是現在才寫,惰性太大,現在改現在做產品的話相信大家基本都做分享吧,一個是項目的需求需要,還有一個是可以很好的宣傳自己的產品,其他的好處根據情況而論其實每個
錯誤類型: 04-28 06:10:15.508: E/AndroidRuntime(849): Caused by: java.lang.ClassNotFoun
原文鏈接:http://code.tutsplus.com/tutorials/dependency-injection-with-dagger-2-on-android
本文實例講述了Android開發中include控件用法。分享給大家供大家參考,具體如下:我們知道,基於Android系統的應用程序的開發,界面設計是非常重要的,它關系著
Agenda:一張圖看Camera2框架類圖 CameraService