Broadcast Receiver监听网络状态

原创 2016年06月01日 18:28:15

在代码中动态注册,不需要在AndroidManifest.xml里静态注册,静态注册在不打开App的情况下,有可以接收到广播。

public class MainActivity extends Activity {
private IntentFilter intentFilter;
private NetworkChangeReceiver networkChangeReceiver;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    intentFilter = new IntentFilter();
    intentFilter.addAction("android.net.conn.CONNECTIVITY_CHANGE");//监听网络的状态;网络状态改变就会被调动。
    networkChangeReceiver = new NetworkChangeReceiver();
    registerReceiver(networkChangeReceiver, intentFilter);
}
@Override
protected void onDestroy() {
    super.onDestroy();
    unregisterReceiver(networkChangeReceiver);
    }
}

创建NetworkChangeReceiver类继承BroadcaseReceiver

class NetworkChangeReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
//枚举 enum NetworkStatus {DisConnect,Mobile,Wifi}
    ConfigConstant.NetworkStatus status
    =getConnectType();
    switch(status){
        case DisConnect:

        break;
        case Mobile:

        break;
        case Wifi:

        break;
    }
}
/*
*获取网络状态,
*/
private ConfigConstant.NetworkStatus getConnectType() {
    ConnectivityManager connMgr =(ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);

    NetworkInfo activeInfo = connMgr.getActiveNetworkInfo();

    if (activeInfo != null && activeInfo.isConnected()){
        if (activeInfo.getType() == ConnectivityManager.TYPE_WIFI)
            return ConfigConstant.NetworkStatus.Wifi;
        else if (activeInfo.getType() == ConnectivityManager.TYPE_MOBILE)
            return ConfigConstant.NetworkStatus.Mobile;
    }
    return ConfigConstant.NetworkStatus.DisConnect;
}

网络状态一旦发生改变,会调用NetworkChangeReceiver 的onReceive(),再去获取网络状态。

4.1.3.3 Android 网络状态监听的静态广播接受者和动态广播接受者Broadcast-Receiver

静态注册广播接收者。 可以理解为静态变量,可以直接使用。 可以直接使用,用完生命周期就结束了,需要用的时候再直接使用。 动态注册广播接收者,可以理解为实例变量,需要对象才能调用。 静态注...
  • Rodulf
  • Rodulf
  • 2016年02月28日 11:23
  • 958

android 通过Service和Receiver来监听网络状态

注:本内容部分来自网络   需要在Activity中得到网络状态,就是需要在接收到网络状态改变的广播的时候,要能够与Activity进行交互,通知Activity当前的网络状态,这就需要写...
  • Ke1vin
  • Ke1vin
  • 2016年04月12日 09:24
  • 2051

android 通过Service和Receiver来监听网络状态

android 通过Service和Receiver来监听网络状态 博客分类: android   注:本内容部分来自网络   需要在Activity中得到网络状态,就...

关于android广播包监听网络状态变化收到java.lang.NullPointerException: Error receiving broadcast Intent

在写一个广播包来监听网络状态改变时,在解锁手机时出现java.lang.NullPointerException的错误,错误显示为net_status这个TextView控件变成了空指针,但是不知道为...

广播Broadcast收发步骤及对网络状态监听、开机广播

转载请注明出处:http://blog.csdn.net/mr_leixiansheng/article/details/53583161 步骤: 1、新建自己的广播类继承BroadcastRecei...

Broadcast监听网络状态,ping判断网络是否可用

判断网络状态,android提供了api,可以很方便的使用。但是在某些情况下,网络状态连接正常,但是并不一定就可以去访问其他网页。比如,路由器打开了,但是没有插上网线,手机GPRS打开了,但是手机已经...
  • Kern_
  • Kern_
  • 2015年09月25日 13:18
  • 1058

Android Broadcast 监听SD卡状态

项目简介:该项目监听SD卡状态详细介绍:部署该应用后,当SD卡状态发送改变时,系统会发出吐司通知用户该应用涉及到的知识有: 1.Android的四大组件之一:广播接收者的使用 ...

【Android】利用广播BroadCast监听网络的变化

package com.app.test02; import android.content.BroadcastReceiver; import android.content.Context; i...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Broadcast Receiver监听网络状态
举报原因:
原因补充:

(最多只允许输入30个字)