判断是否连接网络以及是否是局域网

来源:互联网 发布:c语言 external 编辑:程序博客网 时间:2024/05/16 10:08


判断能否上外网

有时候我们连接上一个没有外网连接的WiFi或者需要输入账号和密码才能链接外网的网络,就会出现虽然网络可用,但是外网却不可以访问。针对这种情况,一般的解决办法就是ping一个外网,如果能ping通就说明可以真正上网,代码如下 * @author sichard     * @category 判断是否有外网连接(普通方法不能判断外网的网络是否连接,比如连接上局域网)     * @return     */     public static final boolean ping() {             String result = null;         try {                 String ip = "www.baidu.com";// ping 的地址,可以换成任何一种可靠的外网                 Process p = Runtime.getRuntime().exec("ping -c 3 -w 100 " + ip);// ping网址3次                 // 读取ping的内容,可以不加                 InputStream input = p.getInputStream();                 BufferedReader in = new BufferedReader(new InputStreamReader(input));                 StringBuffer stringBuffer = new StringBuffer();                 String content = "";                 while ((content = in.readLine()) != null) {                         stringBuffer.append(content);                 }                 Log.d("------ping-----", "result content : " + stringBuffer.toString());                 // ping的状态                 int status = p.waitFor();                 if (status == 0) {                         result = "success";                         return true;                 } else {                         result = "failed";                 }         } catch (IOException e) {                 result = "IOException";         } catch (InterruptedException e) {                 result = "InterruptedException";         } finally {                 Log.d("----result---", "result = " + result);         }         return false;


判断当前网络类型

public static String GetNetworkType(){    String strNetworkType = "";        NetworkInfo networkInfo = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE).getActiveNetworkInfo();    if (networkInfo != null && networkInfo.isConnected())    {        if (networkInfo.getType() == ConnectivityManager.TYPE_WIFI)        {            strNetworkType = "WIFI";        }        else if (networkInfo.getType() == ConnectivityManager.TYPE_MOBILE)        {            String _strSubTypeName = networkInfo.getSubtypeName();                        Log.e("cocos2d-x", "Network getSubtypeName : " + _strSubTypeName);                        // TD-SCDMA   networkType is 17            int networkType = networkInfo.getSubtype();            switch (networkType) {                case TelephonyManager.NETWORK_TYPE_GPRS:                case TelephonyManager.NETWORK_TYPE_EDGE:                case TelephonyManager.NETWORK_TYPE_CDMA:                case TelephonyManager.NETWORK_TYPE_1xRTT:                case TelephonyManager.NETWORK_TYPE_IDEN: //api<8 : replace by 11                    strNetworkType = "2G";                    break;                case TelephonyManager.NETWORK_TYPE_UMTS:                case TelephonyManager.NETWORK_TYPE_EVDO_0:                case TelephonyManager.NETWORK_TYPE_EVDO_A:                case TelephonyManager.NETWORK_TYPE_HSDPA:                case TelephonyManager.NETWORK_TYPE_HSUPA:                case TelephonyManager.NETWORK_TYPE_HSPA:                case TelephonyManager.NETWORK_TYPE_EVDO_B: //api<9 : replace by 14                case TelephonyManager.NETWORK_TYPE_EHRPD:  //api<11 : replace by 12                case TelephonyManager.NETWORK_TYPE_HSPAP:  //api<13 : replace by 15                    strNetworkType = "3G";                    break;                case TelephonyManager.NETWORK_TYPE_LTE:    //api<11 : replace by 13                    strNetworkType = "4G";                    break;                default:                    // http://baike.baidu.com/item/TD-SCDMA 中国移动 联通 电信 三种3G制式                    if (_strSubTypeName.equalsIgnoreCase("TD-SCDMA") || _strSubTypeName.equalsIgnoreCase("WCDMA") || _strSubTypeName.equalsIgnoreCase("CDMA2000"))                     {                        strNetworkType = "3G";                    }                    else                    {                        strNetworkType = _strSubTypeName;                    }                                        break;             }                         Log.e("cocos2d-x", "Network getSubtype : " + Integer.valueOf(networkType).toString());        }    }        Log.e("cocos2d-x", "Network Type : " + strNetworkType);        return strNetworkType;}




0 0