监听网络状态,依旧笔记
//检测网络是否可用
public static boolean isNetworkAvailable(Activity mActivity) {
Context context = mActivity.getApplicationContext();
ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
if (connectivityManager == null) {
return false;
} else {
// 获取当前连接可用的网络
NetworkInfo mNetworkInfo = connectivityManager.getActiveNetworkInfo();
if (mNetworkInfo != null) {
Log.d(TAG, "isNetworkAvailable: 当前网络连接" + mNetworkInfo.isAvailable());
return mNetworkInfo.isAvailable();
}
}
return false;
}
一般要监听网络变化,用广播实现。
public class NetWorkReceiver extends BroadcastReceiver {
private static final String TAG = "NetWorkReceiver";
@Override
public void onReceive(Context context, Intent intent) {
Log.e(TAG, "网络状态改变");
boolean success = false;
// //获得网络连接服务
// ConnectivityManager connManager = (ConnectivityManager)
//context.getSystemService(CONNECTIVITY_SERVICE);
// // State state = connManager.getActiveNetworkInfo().getState();
//
// //新版本获取网络状态
// if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
// Network[] networks = connManager.getAllNetworks();
// NetworkInfo networkInfo;
// for (Network mNetwork : networks) {
// networkInfo = connManager.getNetworkInfo(mNetwork);
// if (networkInfo.getState().equals(NetworkInfo.State.CONNECTED)) {
// success = true;
// }
// }
// }else {
// //旧版本方法
// if (connManager != null) {
// NetworkInfo[] info = connManager.getAllNetworkInfo();
// if (info != null) {
// for (NetworkInfo anInfo : info) {
// if (anInfo.getState() == NetworkInfo.State.CONNECTED) {
// success = true;
// Log.d(TAG, "NETWORKNAME: " + anInfo.getTypeName());
// }
// }
// }
// }
// }
success = SystemSetting.isNetworkAvailable((Activity) context);
if (!success) {
Toast.makeText(context, "网络出错,请检查网络连接", Toast.LENGTH_LONG).show();
}
}
}
//onCreate()注册网络监听
netWorkReceiver = new NetWorkReceiver();
IntentFilter filterNetwork = new IntentFilter();
filterNetwork.addAction(ConnectivityManager.CONNECTIVITY_ACTION);
registerReceiver(netWorkReceiver, filterNetwork);
//onDestroy()注销广播
unregisterReceiver(netWorkReceiver);