Android实时监听网络状态(1)

来源:互联网 发布:usb加密狗破解软件 编辑:程序博客网 时间:2024/06/06 08:46

package com.javen.receiver;import java.util.ArrayList;import com.javen.application.Application;import com.javen.netbroadcast.NetUtil;import android.content.BroadcastReceiver;import android.content.Context;import android.content.Intent;public class NetBroadcastReceiver extends BroadcastReceiver {    public static ArrayList<netEventHandler> mListeners = new ArrayList<netEventHandler>();    private static String NET_CHANGE_ACTION = "android.net.conn.CONNECTIVITY_CHANGE";    @Override    public void onReceive(Context context, Intent intent) {        if (intent.getAction().equals(NET_CHANGE_ACTION)) {            Application.mNetWorkState = NetUtil.getNetworkState(context);            if (mListeners.size() > 0)// 通知接口完成加载                for (netEventHandler handler : mListeners) {                    handler.onNetChange();                }        }    }    public static abstract interface netEventHandler {        public abstract void onNetChange();    }}
复制代码

4、在应该的Activity中实现netEventHandler接口 

复制代码
package com.javen.netbroadcast;import com.javen.receiver.NetBroadcastReceiver;import com.javen.receiver.NetBroadcastReceiver.netEventHandler;import com.javen.ui.base.BaseActivity;import android.os.Bundle;import android.view.Menu;public class MainActivity extends BaseActivity implements netEventHandler{        @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        NetBroadcastReceiver.mListeners.add(this);    }    @Override    public boolean onCreateOptionsMenu(Menu menu) {        // Inflate the menu; this adds items to the action bar if it is present.        getMenuInflater().inflate(R.menu.main, menu);        return true;    }    @Override    public void onNetChange() {        // TODO Auto-generated method stub        if (NetUtil.getNetworkState(this) == NetUtil.NETWORN_NONE) {            T.showLong(this, R.string.net_err);        }else {            T.showLong(this, "网络可以使用");        }    }}
复制代码

5、判断网络的工具类

复制代码
package com.javen.netbroadcast;import android.content.Context;import android.net.ConnectivityManager;import android.net.NetworkInfo.State;public class NetUtil {    public static final int NETWORN_NONE = 0;    public static final int NETWORN_WIFI = 1;    public static final int NETWORN_MOBILE = 2;    public static int getNetworkState(Context context) {        ConnectivityManager connManager = (ConnectivityManager) context                .getSystemService(Context.CONNECTIVITY_SERVICE);        // Wifi        State state = connManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI)                .getState();        if (state == State.CONNECTED || state == State.CONNECTING) {            return NETWORN_WIFI;        }        // 3G        state = connManager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE)                .getState();        if (state == State.CONNECTED || state == State.CONNECTING) {            return NETWORN_MOBILE;        }        return NETWORN_NONE;    }}
复制代码


原文地址:http://www.cnblogs.com/zyw-205520/p/3770705.html

0 0
原创粉丝点击