Android之判断是否有网封装类
16lz
2021-12-04
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;//内网中wifipublic 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(); }
更多相关文章
- 浅谈Java中Collections.sort对List排序的两种方法
- Python list sort方法的具体使用
- python list.sort()根据多个关键字排序的方法实现
- Android(安卓)SDK下载和更新失败的解决方法
- Android线程之消息机制(Handler、MessageQueue、Looper、Thread)
- 教你如何开关Android的APN网络
- Eclipse build Android时不生成apk问题解决方法
- 在android中显示网络图片及查看页面源代码
- Android(安卓)Touch事件传递机制具体解释 上