Android 判断网络状态(包括手机连网状态以及目标网址状态)

Android 判断网络状态这一应用技巧在应用中会经常用到。尤其是在使用Android网络编程的时候,应用并不是每次都能连接到网络,一些异常情况也可能导致网络无法连接,在这个时候,对于网络连接的判断就非常重要了。

下面是具体实例:

首先是对网络访问权限的设置:

   

   



// 判断目标服务器是否可以连接函数(调用时host写网址,如"www.baidu.com") private boolean isReachqy(String host) {
try {
java.net.Socket socket = new java.net.Socket();
socket.connect(new InetSocketAddress(host, 80), 5000);
} catch (Exception e) {
return false;
}
return true;

}




// 判断用户手机的网络连接是否打开,如果没打开,可以选择跳转到设置里打开网络连接
private void checkNetWorkStatus() {

boolean isConnected = false;
ConnectivityManager connectManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
connectManager.getActiveNetworkInfo();


NetworkInfo activeInfo = connectManager.getActiveNetworkInfo();
NetworkInfo mobInfo = connectManager
.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
if (activeInfo != null) {
netStatus = activeInfo.isAvailable();
isConnected = activeInfo.isConnected();
}
showNetWorkStatus();         //若没连网,弹出设置网络对话框


}



        //手机若没打开网络连接时弹出提示框
private void showNetWorkStatus(){
if (!netStatus) {
Builder alert = new AlertDialog.Builder(this)
.setTitle("温馨提示:本应用程序需要连接网络").setMessage("您的手机没有连接网络,是否对网络进行设置?");
alert.setPositiveButton("是", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
Intent mIntent = new Intent("/");
ComponentName comp = new ComponentName(
"com.android.settings",
"com.android.settings.WirelessSettings");
mIntent.setComponent(comp);
mIntent.setAction("android.intent.action.VIEW");
startActivityForResult(mIntent, 0); // 如果在设置完成后需要再次进行操作,可以重写操作代码,在这里不再重写
}
}).setNeutralButton("否", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
dialog.cancel();
}
}).show();
}
}



原文来自:http://hi.baidu.com/tzq668766/item/4202f25b4e46fd0ee6c4a532

你可能感兴趣的:(Android)