在软件自测过程中我发现如果没有打开手机网络,系统会异常关闭,所以就想到有必要在用户登录之前判断手机的网络连接状态。如果用户打开了网络连接,则可以正常登录;反之,登录和注册按钮不可用,并弹出“打开网络”的提示消息。
实现步骤如下:
1、 首先在AndroidManifest.xml文件中加入相应权限
<!-- 允许网络访问 -->
<uses-permission android:name="android.permission.INTERNET" />
<!-- 允许检查网络状态 -->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
2、 创建一个新的类,名为ConnectDirect.java
public class ConnectDirect {
private Context _context;
public ConnectDirect(Context context) {
this._context = context;
}
public boolean isConnectingToInternet() {
ConnectivityManager connectivity = (ConnectivityManager) _context
.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;
}
}
3、 当需要在应用中检查网络状态时调用isConnectingToInternet()函数,它会返回true或false。
//判断网络连接
ConnectDirect cd = new ConnectDirect(getApplicationContext());
Boolean isInternetPresent = cd.isConnectingToInternet(); // true or false
if(isInternetPresent!=true){
loginBtn.setEnabled(false);
zhuceBtn.setEnabled(false);
Toast.makeText(getApplicationContext(),"未检测到网络,请打开网络连接!",1).show();
}
4、 根据第3步返回的结果判断即可。
运行效果如图: