Android判断当前网络是否可用
16lz
2021-01-25
在Android平台上开发基于网络的应用,必然需要去判断当前的网络连接情况。对于当前网络情况的判断,有不同的判断。
先看一个自己定义的应用类。
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等等。
再来看使用的例子。
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(); }
其中XXXActivity是我自己的Activity类,DialogUtil是我自己定义的Dialog应用类。这里的代码片段,是在判断没有网络的情况下,弹出dialog,提示用户是否进入系统的网络设置界面。
因为以上代码用到了权限,需要在AndroidManifest文件中加入如下权限代码:
<uses-permission
android:name="android.permission.ACCESS_NETWORK_STATE"/>
实现的网络infor类:
import android.content.Context;import android.net.ConnectivityManager;import android.net.NetworkInfo;public class ConnectionDetetor {private Context mContext; public ConnectionDetetor(Context context){ this.mContext = context; } public boolean isConnectingToInternet(){ ConnectivityManager connectivity = (ConnectivityManager)mContext.getSystemService(Context.CONNECTIVITY_SERVICE); if (connectivity != null) { NetworkInfo[] info = connectivity.getAllNetworkInfo(); if (info != null) for (int i = 0; i < info.length; i++) if (info[i].getState() == NetworkInfo.State.CONNECTED) { return true; } } return false; } public boolean isConnecting(){ ConnectivityManager connectivity = (ConnectivityManager)mContext.getSystemService(Context.CONNECTIVITY_SERVICE); if(connectivity!= null){ NetworkInfo[] info = connectivity.getAllNetworkInfo(); for(NetworkInfo in:info){ if(in.getState()== NetworkInfo.State.CONNECTED){ return true; } } } return false; }}
更多相关文章
- 没有一行代码,「2020 新冠肺炎记忆」这个项目却登上了 GitHub 中
- Nginx系列教程(六)| 手把手教你搭建 LNMP 架构并部署天空网络电影
- 2010.05.15学习日志
- Android中解析XML的方法
- Android7.0 禁止锁屏状态的下拉状态栏
- Parcelable接口的使用(跨进程,Intent传输)
- Android(安卓)View 绘制流程之四:绘制流程触发机制
- Android(安卓)SDK 更新时连接出现“https://dl-ssl.google.com r
- Android(安卓)aidl学习笔记-服务端