第一种方法:检查是否连接到网络
/**
* Check Network status
*/
public static boolean isNetworkAvailable(Context c) {
boolean bNetwork = false;
ConnectivityManager mConnMgr = (ConnectivityManager) c
.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo[] nis = mConnMgr.getAllNetworkInfo();
if (nis != null) {
for (NetworkInfo ni : nis) {
if (ni != null) {
if (ni.isConnected() == true) {
bNetwork = true;
break;
}
}
}
}
return bNetwork;
}
如何没有连接到网络点击后直接到wifi设置界面:
private boolean CheckNetwork() {
boolean flag = false;
flag = UpdateUtils.isNetworkAvailable(mContext);
if (!flag) {
chNetworkDLG = new AlertDialog.Builder(this)
.setTitle(R.string.txt_no_net)
.setMessage(R.string.txt_no_net_msg)
.setPositiveButton(R.string.button_ok, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
Intent mIntent = new Intent("/");
ComponentName comp = new ComponentName("com.android.settings",
"com.android.settings.Settings");
mIntent.setComponent(comp);
mIntent.setAction("android.intent.action.VIEW");
startActivity(mIntent);
}
})
.setNeutralButton(R.string.button_cancel,
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
dialog.cancel();
}
}).show();
}
Log.d(TAG, "CheckNetwork() ===> :[" + flag + "]");
return flag;
}
第二种方法:
android监控网络状态
android网络应用程序开发中,经常要判断网络连接是否可用,因此经常有必要监听网络状态的变化。android的网络状态监听可以用BroadcastReceiver来接收网络状态改变的广播,具体实现如下:
BroadcastReceiver mNetworkStateReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
Log.e(TAG, "网络状态改变");
boolean success = false;
//获得网络连接服务
ConnectivityManager connManager = (ConnectivityManager) getSystemService(CONNECTIVITY_SERVICE);
// State state = connManager.getActiveNetworkInfo().getState();
State state = connManager.getNetworkInfo(
ConnectivityManager.TYPE_WIFI).getState(); // 获取网络连接状态
if (State.CONNECTED == state) { // 判断是否正在使用WIFI网络
success = true;
}
state = connManager.getNetworkInfo(
ConnectivityManager.TYPE_MOBILE).getState(); // 获取网络连接状态
if (State.CONNECTED != state) { // 判断是否正在使用GPRS网络
success = true;
}
if (!success) {
Toast.makeText(LocationMapActivity.this, "您的网络连接已中断", Toast.LENGTH_LONG).show();
}
}
在Activity的onCreate中:
//注册网络监听
IntentFilter filter = new IntentFilter();
filter.addAction(ConnectivityManager.CONNECTIVITY_ACTION);
registerReceiver(mNetworkStateReceiver, filter);
在Activity中的onDestroy中:'
unregisterReceiver(mNetworkStateReceiver); //取消监听
返回当前联网状态:
public static String getNetwrokType(Context context) {
ConnectivityManager connectivityManager = (ConnectivityManager) context
.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo info = connectivityManager.getActiveNetworkInfo();
if (info != null && info.isAvailable()) {
if (info.getTypeName().equalsIgnoreCase("wifi")) {
return "wifi";
} else if (info.getTypeName() != null
&& info.getTypeName().equalsIgnoreCase("mobile")
&& info.getExtraInfo() != null) {
if (info.getExtraInfo().equalsIgnoreCase("cmwap")) {
return "cmwap";
} else if (info.getExtraInfo().equalsIgnoreCase("cmnet")) {
return "cmnet";
}else if (info.getExtraInfo().equalsIgnoreCase("3gnet")) {
return "3gnet";
}
}
}
return "";
}