我的家園

          我的家園

          最近做項目,用到判斷網(wǎng)絡(luò)連接狀態(tài),于是想寫個能兼容多種網(wǎng)絡(luò)模式的判斷工具,如下直接上代碼


          import java.util.Hashtable;


          import android.content.Context;
          import android.net.ConnectivityManager;
          import android.net.NetworkInfo;
          import android.net.NetworkInfo.DetailedState;
          import android.util.Log;


          import com.rk.jcz.util.FeedBackException;
          /**
           * 
           * @author 劉偉
           * @date 2012-04-02
           * @QQ 574613441
           */
          public class NetConnectManager {
          private static final String LOG_TAG = "NetConnectManager" ;
          /**  
               * 中國移動cmwap  
               */  
              public static String CMWAP = "cmwap";   
                 
              /**  
               * 中國移動cmnet  
               */  
              public static String CMNET = "cmnet";   
                 
              //中國聯(lián)通3GWAP設(shè)置        中國聯(lián)通3G因特網(wǎng)設(shè)置        中國聯(lián)通WAP設(shè)置        中國聯(lián)通因特網(wǎng)設(shè)置   
              //3gwap                 3gnet                uniwap            uninet   
                 
                 
              /**  
               * 3G wap 中國聯(lián)通3gwap APN   
               */  
              public static String GWAP_3 = "3gwap";   
                 
              /**  
               * 3G net 中國聯(lián)通3gnet APN   
               */  
              public static String GNET_3="3gnet";   
                 
              /**  
               * uni wap 中國聯(lián)通uni wap APN   
               */  
              public static String UNIWAP="uniwap";   
              /**  
               * uni net 中國聯(lián)通uni net APN   
               */  
              public static String UNINET="uninet";   
              
          /**  
          * 電信APN列表  
          * @author wudongdong  
          *  
          */  
             public static final String CTWAP="ctwap";   
             public static final String CTNET="ctnet";   




          private static Hashtable<String,String> networkTable = new Hashtable<String,String>();
          public static void switchNetType(Context context,String from,String to){




          }
          public static boolean isNetWorkAvailable(Context context) {
          boolean isAvailable = false ;
          ConnectivityManager connectivityManager = (ConnectivityManager) context
          .getSystemService(Context.CONNECTIVITY_SERVICE);
          if(connectivityManager!=null){
          NetworkInfo networkInfo = connectivityManager.getActiveNetworkInfo();
          if(networkInfo!=null){
          DetailedState detailedState = networkInfo.getDetailedState();
          String detailedName = detailedState.name();
          if(detailedName==null){
          detailedName = "";
          }
          networkTable.put("detailedName", detailedName);
          String extraInfo = networkInfo.getExtraInfo();
          if(extraInfo==null){
          extraInfo = "";
          }
          networkTable.put("extraInfo", extraInfo);

          String reason = networkInfo.getReason();
          if(reason==null){
          reason = "";
          }
          networkTable.put("reason", reason);
          NetworkInfo.State state = networkInfo.getState();
          String stateName = "";
          if(state!=null && state.name()!=null){
          stateName=state.name();

          }
          // 經(jīng)過多次測試,只有stateName可以準(zhǔn)確的判斷網(wǎng)絡(luò)連接是否正常

          if("CONNECTED".equalsIgnoreCase(stateName)){
          isAvailable = true ;
          }
          networkTable.put("stateName", stateName);
          int subType = networkInfo.getSubtype();
          networkTable.put("subType", subType+"");
          String subtypeName = networkInfo.getSubtypeName();
          if(subtypeName==null){
          subtypeName = "";
          }
          networkTable.put("subtypeName", subtypeName);
          int type = networkInfo.getType();
          String typeName = networkInfo.getTypeName();
          if(typeName==null){
          typeName = "";
          }
          networkTable.put("typeName", typeName);
          Log.d(LOG_TAG,getLogString());
          }
          }
          return isAvailable;
          }
          public static String getLogString(){
          StringBuilder sb = new StringBuilder();
          sb.append("detailedName="+networkTable.get("detailedName"));
          sb.append(" extraInfo="+networkTable.get("extraInfo"));
          sb.append(" reason="+networkTable.get("reason"));
          sb.append(" stateName="+networkTable.get("stateName"));
          sb.append(" subtypeName="+networkTable.get("subtypeName"));
          sb.append(" typeName="+networkTable.get("typeName"));
          return sb.toString();
          }
          public static String apnType(){
          String apn = "" ;
          String netType = networkTable.get("typeName");
          if("CONNECTED".equals(networkTable.get("stateName"))){
          if("wifi".equalsIgnoreCase(netType)){
          apn = netType;
          }else if("mobile".equalsIgnoreCase(netType)){
          netType = networkTable.get("extraInfo").toLowerCase();    
             apn = matchAPN(netType);
          }else{
          new FeedBackException("UNKNOW networkType:::"+getLogString());
          }
          }else{

          }
          return apn ;
          }
          public static String matchAPN(String currentName) {           
                 if("".equals(currentName) || null==currentName){   
                     return "";   
                 }   
                 currentName = currentName.toLowerCase();   
                 if(currentName.startsWith(CMNET))   
                     return CMNET;   
                 else if(currentName.startsWith(CMWAP))   
                     return CMWAP;   
                 else if(currentName.startsWith(GNET_3))   
                     return GNET_3;   
                 else if(currentName.startsWith(GWAP_3))   
                     return GWAP_3;   
                 else if(currentName.startsWith(UNINET))   
                     return UNINET;   
                 else if(currentName.startsWith(UNIWAP))   
                     return UNIWAP;
                 else if(currentName.startsWith(CTWAP))   
                     return CTWAP;
                 else if(currentName.startsWith(CTNET))   
                     return CTNET;
                 else if(currentName.startsWith("default"))   
                     return "default";   
                 else return "";   
               
             }   
          }


          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 满洲里市| 进贤县| 辽宁省| 庆阳市| 保靖县| 镇江市| 紫阳县| 高邮市| 江达县| 灵寿县| 渝北区| 城口县| 嘉峪关市| 扎鲁特旗| 望江县| 衡山县| 金乡县| 拉孜县| 永靖县| 都兰县| 博湖县| 蒲城县| 道孚县| 上蔡县| 霍邱县| 永清县| 水富县| 奉贤区| 美姑县| 溆浦县| 平乡县| 平远县| 尼勒克县| 恩施市| 伊金霍洛旗| 砀山县| 江门市| 车险| 东源县| 扎囊县| 蒲城县|