Android监听网络变化

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

最近在做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"
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值