最近在做APP,需要监听Android手机网络的变化情况,同时对不同的情况做出不同的响应策略,这里有两种方法。
判断联网工具类
这里我使用的是ConnectivityManager和NetworkInfo两个类来实现的。详细代码如下:
import android.content.Context;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.widget.Toast;
/**
* Created on 2016/10/31.
* 网络状态判断
*/
public class NetWorkUtils {
public Context context = null;
public NetWorkUtils(Context context) {
this.context = context;
}
public static MyApplication getApplication() {
return MyApplication.getInstance();
}
/**
* 判断是否联网
*/
public static boolean isConnectNET(final Context context) {
final ConnectivityManager conManage = (ConnectivityManager)
context.getSystemService(Context.CONNECTIVITY_SERVICE);
final NetworkInfo networkInfo = conManage.getActiveNetworkInfo();
if (networkInfo != null && networkInfo.isAvailable()) {
return true;
} else {
Toast.makeText(context, "断网了,请检查网络~", Toast.LENGTH_SHORT).show();
return false;
}
}
}
自定义BroadcastReceiver
单单使用BroadcastReceiver来实现监听。
源码
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import com.jiketuandui.antinetfraud.Activity.NetWorkErrorActivity;
import com.jiketuandui.antinetfraud.Util.NetWorkUtils;
/**
* Created on 2016/10/31.
* 使用广播来监听“网络连接”的情况
* 当网络连接不存在的时候(断网),NetWorkUtils.isConnectNET(context)
* 返回false,这个时候我们就跳转到一个错误提示的Activity中,提示用户联网
*/
public class NETChangeReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
if (!NetWorkUtils.isConnectNET(context)) {
intent.setClass(context, NetWorkErrorActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(intent);
}
}
}
注册
1.为了获取上网的权限,和检测网络状态,我们需要添加权限
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
2.在Manifest中配置BroadReceiver监测断网,action里面是网络连接变化时候来触发这个Receiver,如下所示:
<receiver
android:name=".NETChangeReceiver"

本文介绍两种监听Android手机网络状态的方法:一是使用BroadcastReceiver监听网络变化并做出响应;二是结合Service和BroadcastReceiver实现实时监听。
最低0.47元/天 解锁文章
3092

被折叠的 条评论
为什么被折叠?



