android 连接网络ping

权限:

<uses-permission android:name="android.permission.INTERNET" />  
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />  
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />  

获取网络连接信息

ConnectivityManager connectivityManager = (ConnectivityManager) this  
                .getSystemService(Context.CONNECTIVITY_SERVICE);
        NetworkInfo activeNetworkInfo = connectivityManager
                .getActiveNetworkInfo();
        //activeNetworkInfo.isAvailable();//是否可用
        //activeNetworkInfo.isConnectedOrConnecting();//是否已连接
        if (activeNetworkInfo != null) {
            int type = activeNetworkInfo.getType();
            System.out.println("连接类型 "+type);
            ping();
            if (type == ConnectivityManager.TYPE_MOBILE) {

            } else if (type == ConnectivityManager.TYPE_WIFI){

            } else if (type == ConnectivityManager.TYPE_BLUETOOTH){

            }
        }

ping测试网络

  public  boolean ping() {
        try {
            String ip = "www.baidu.com";
            //-c: 表示次数,1 为1次 -w: 表示deadline, time out的时间,单位为秒,5为5秒。
            Process p = Runtime.getRuntime().exec("ping -c 1 -w 5 " + ip);
            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.e("content : ", stringBuffer.toString());
            //waitfor()命令之前读出窗口的标准输出缓冲区和标准错误流的内容
            int status = p.waitFor();
            if (status == 0) {
                return true;
            }
        } catch (IOException e) {

        } catch (InterruptedException e) {

        }
        return false;

    }