Android之判断是否有网封装类
2015-11-11 17:21
405 查看
Android之判断是否有网封装类
我们做项目的时候,一般都不能离开网络,下面是对判断是否有网类的封装import android.content.Context; import android.net.ConnectivityManager; import android.net.NetworkInfo; import android.net.wifi.WifiInfo; import android.net.wifi.WifiManager; import android.widget.Toast; public class NetState { public final static int CONNECTION_NO = 0; //无网络连接 public static final int CONNECTION_HOME = 1;//内网中wifi public final static int CONNECTION_OUTSIDE = 2;//外网中wifi或使用移动数据 //检查网络状态 public static int checkState(Context context){ int state = CONNECTION_NO; ConnectivityManager connectivityManager= (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE); if(connectivityManager!=null){ NetworkInfo networkInfo = connectivityManager.getActiveNetworkInfo(); if(networkInfo!=null&&networkInfo.isAvailable()&&networkInfo.isConnected()){ if (networkInfo.getType() == ConnectivityManager.TYPE_WIFI) { WifiManager wifiManager =(WifiManager)context.getSystemService(Context.WIFI_SERVICE); WifiInfo wifiInfo = wifiManager.getConnectionInfo(); // wifiInfo.getBSSID().equals(wifiMac); state = CONNECTION_HOME; }else { state =CONNECTION_OUTSIDE; } } } return state; } /** * 判断是否有网络 */ @SuppressWarnings("deprecation") public static boolean IfNet(Context context){ switch (NetState.checkState(context)) { case NetState.CONNECTION_NO: Toast.makeText(context, "网络断了哦,检查一下您的网络吧", Toast.LENGTH_SHORT).show(); return true; default: break; } return false; } public static String getLocalMacAddress(Context context) { WifiManager wifi = (WifiManager) context.getSystemService(Context.WIFI_SERVICE); WifiInfo info = wifi.getConnectionInfo(); return info.getMacAddress(); } public static boolean isWifi(Context context) { try { WifiManager wm = (WifiManager) context.getSystemService(Context.WIFI_SERVICE); return (wm!=null && WifiManager.WIFI_STATE_ENABLED == wm.getWifiState()); } catch (Exception e) { } return false; } }还有一些其它的可以参考下
public class NetworkDetector { public static boolean detect(Activity act) { ConnectivityManager manager = (ConnectivityManager) act .getApplicationContext().getSystemService( Context.CONNECTIVITY_SERVICE); if (manager == null) { return false; } NetworkInfo networkinfo = manager.getActiveNetworkInfo(); if (networkinfo == null || !networkinfo.isAvailable()) { return false; } return true; } } 这个类只有一个静态方法,用来检测当前系统的网络是否可用。如果可用,返回true。 还要进一步说明的是,NetworkInfo类中有一个方法getType(),这个方法可以用来判断当前可用的网络是wifi,还是mobile等等。 再来看使用的例子。 view plaincopy to clipboardprint? boolean networkState = NetworkDetector.detect(XXXActivity.this); if (!networkState) { DialogUtil.openMsgDialog(XXXActivity.this, android.R.drawable.ic_dialog_info, “网络不可用,是否现在设置网络?”, android.R.string.ok, android.R.string.cancel, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { startActivityForResult(new Intent( ACTION_WIRELESS_SETTINGS), 0); } }, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { dialog.cancel(); } }).show(); } boolean networkState = NetworkDetector.detect(XXXActivity.this); if (!networkState) { DialogUtil.openMsgDialog(XXXActivity.this, android.R.drawable.ic_dialog_info, “网络不可用,是否现在设置网络?”, android.R.string.ok, android.R.string.cancel, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { startActivityForResult(new Intent( ACTION_WIRELESS_SETTINGS), 0); } }, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { dialog.cancel(); } }).show(); }
相关文章推荐
- 读Android Picasso源码有感
- Android使用UncaughtExceptionHandler捕获全局异常
- android之 MAT、DDMS 等内存查看工具
- Android6.0极其以上系统获取Dangerous系统权限问题及其解决方案
- android控件的事件传播机制
- Android四大组件之BroadCastReceiver
- android数据库相关几个小问题
- Android开发中,集成百度地图时,如何去除地图中的比例尺控件和缩放控件
- AndroidBinder进程间通信系统
- AndroidBinder进程间通信系统-android学习之旅(86)
- AndroidBinder进程间通信系统-android学习之旅(86)
- AndroidBinder进程间通信系统-android学习之旅(86)
- 关于universal-image-loader中的几种内存缓存策略
- 《android 学习》二、Activity的四种启动模式
- Android5.0源码分析—— Zygote进程分析
- android中tabhost学习
- android开发入门经验 ADT Bundle环境搭建
- Android Matrix
- AndroidStudio的启动参数简介
- QT创建Android下的lib时出现的编译错误