通过静态广播监听网络变化,在通过回调通知

package com.changim.patient.app.sys.receive;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.util.Log;

import com.changim.patient.app.sys.Constants;
import com.changim.patient.app.sys.service.SocketService;
import com.changim.patient.app.utils.TDevice;

import java.util.ArrayList;

public class NetBroadcastReceiver extends BroadcastReceiver {

    private final String TAG = "NetBroadcastReceiver";

    public static ArrayList<NetEventHandler> mListeners = new ArrayList<NetEventHandler>();

    @Override
    public void onReceive(final Context context, Intent intent) {
        if (intent.getAction().equals(Constants.INTENT_ACTION.ACTION_NET_CONN_CHANGE)) {
            Log.d(TAG, "监听网络连接状态");
            boolean hasInternet = TDevice.hasInternet();
            if (hasInternet) {
                context.startService(new Intent(context, SocketService.class));
            }

            if (mListeners.size() > 0)// 通知接口完成加载
                for (NetEventHandler handler : mListeners) {
                    handler.onNetChange(hasInternet);
                }
        } else if (intent.getAction().equals(Constants.INTENT_ACTION.ACTION_NET_CONN_SUCCESS)) {//连接成功,尝试重连接

        } else if (intent.getAction().equals(Constants.INTENT_ACTION.ACTION_NET_CONN_FAILURE)) {//连接失败

        }
    }

    public static abstract interface NetEventHandler {

        public abstract void onNetChange(boolean hasInternet);

    }
}
package com.changim.patient.app.sys;

/**
 * <描述当前文件类名功能>
 *
 * @author :
 * @date : 2016-03-18 16:51
 */
public interface Constants {

    interface INTENT_ACTION {

        final String ACTION_NET_CONN_CHANGE = "android.net.conn.CONNECTIVITY_CHANGE";
        final String ACTION_NET_CONN_SUCCESS = "android.net.conn.CONNECTIVITY_SUCCESS";
        final String ACTION_NET_CONN_FAILURE = "android.net.conn.CONNECTIVITY_FAILURE";

    }

}

记得在AndroidManifest.xml中注册及加权限:

<receiver
            android:name=".sys.receive.NetBroadcastReceiver"
            android:enabled="true"
            android:exported="true">
            <intent-filter>
                <action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
                <action android:name="android.net.conn.CONNECTIVITY_SUCCESS" />
                <action android:name="android.net.conn.CONNECTIVITY_FAILURE" />
            </intent-filter>
        </receiver>
时间: 2024-10-11 17:15:37

通过静态广播监听网络变化,在通过回调通知的相关文章

Android开发之使用广播监听网络状态变化

我们经常需要判断网络状态的变化,如有无网络,所以需要监听网络状态的变化,比如网络断开,网络连接给予友好提示.如何监听网络状态的变化呢,最近工作中需要用到这个,于是就用广播机制来实现了网络状态的监听. 使用广播机制来监听网络状态主要涉及到以下几点: 1.需要自己编写个网络广播接收器,该接收器继承BroadcastReceiver类,用来接收系统发出的广播.比如我自己写了个NetStatusReceiver广播接收器.代码如下: package com.log.system; import andr

android动态注册监听网络变化异常

在使用广播接收器监听网络变化的时候,在AndroidManifest.xml中加入<user-permission android:name="android.permission.ACCESS_NETWOEK_STATE"/>还是无法启动应用程序,显示如下异常 07-06 00:03:22.568 22393-22393/? E/AndroidRuntime﹕ FATAL EXCEPTION: main Process: com.lvkui.helloworld3, PI

动态注册广播接收器,监听网络变化

1:NetChangeReceiver.java public class NetChangeReceiver extends BroadcastReceiver{ @Override public void onReceive(Context context, Intent intent) { ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE)

android 通过广播监听网络连接状况

首先添加以下权限 <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <uses-permission android:name="android.permission.CHANGE_WIFI_STATE&quo

通过Broadcast动态注册监听网络变化和网络类型

package com.beini.networkchanges; import android.app.Activity; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.net.ConnectivityManager; impor

MUI判断网络连接以及监听网络变化JS

来源:netChange问题:怎么判断网络状态 MUI用于获取当前设备的网络类型 1 function plusReady(){ 2 3 var types = {}; 4 5 types[plus.networkinfo.CONNECTION_UNKNOW] = "Unknown connection"; 6 7 types[plus.networkinfo.CONNECTION_NONE] = "None connection"; 8 9 types[plus.

Android 监听网络变化

监听网络状态

网络监听的自己写过一个,刚在github上找到一个,先保存着,以后直接用 原文地址:https://github.com/GHdeng/NetMonitor 使用广播监听网络变化 ###需求确认 监听当前网络的状态和类型 类似京东客户端,当网络发生变化时相应更新UI界面 ###制作流程 使用广播监听当前网络的状态. 配合Application周期注册监听,使得每个界面都继续监听 抽出BaseActivity类实现回调 #####1.继承BroadcastReceiver实现onReceive方法

android 监听网络状态的变化及实战

android 监听网络状态的变化及实际应用 转载请注明博客地址:http://blog.csdn.net/gdutxiaoxu/article/details/53008266 平时我们在请求错误的情况下,通常会进行处理一下,一般来说,主要分为两方面的错误 - 没有网络的错误 - 在有网络的情况下,我们客户端的错误或者服务器端的错误 今天这篇博客主要阐述以下问题 怎样监听网络状态的变化,包括是否打开WiFi,否打开数据网络,当前连接的网络是否可用 网络没有打开情况下的处理,如弹出对话框,跳转到