创建动态监听广播
public class NetChangeState extends BroadcastReceiver { NetWork mNetWork = new NetWork(); @Override public void onReceive(Context context, Intent intent) { if (ConnectivityManager.CONNECTIVITY_ACTION == intent.getAction()){ ConnectivityManager manager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo info = manager.getActiveNetworkInfo(); if (info != null){ if (info.isConnected()) { mNetWork.setConnected(true); //通知观察者网络状态已改变 NetWorkChange.getNetWorkChange().notifyDataChange(mNetWork); if (info.getType() == ConnectivityManager.TYPE_WIFI) { mNetWork.setWifi(true); //通知观察者网络状态已改变 NetWorkChange.getNetWorkChange().notifyDataChange(mNetWork); Toast.makeText(context, "当前wifi连接可用", Toast.LENGTH_SHORT).show(); } else if (info.getType() == ConnectivityManager.TYPE_MOBILE) { mNetWork.setMobile(true); //通知观察者网络状态已改变 NetWorkChange.getNetWorkChange().notifyDataChange(mNetWork); Toast.makeText(context, "当前移动网络连接可用", Toast.LENGTH_SHORT).show(); } } else { mNetWork.setConnected(false); //通知观察者网络状态已改变 NetWorkChange.getNetWorkChange().notifyDataChange(mNetWork); Toast.makeText(context, "当前没有网络连接,请确保你已经打开网络", Toast.LENGTH_SHORT).show(); } }else { mNetWork.setConnected(false); mNetWork.setMobile(false); mNetWork.setWifi(false); NetWorkChange.getNetWorkChange().notifyDataChange(mNetWork); } } } }
创建观察者
public class NetWhatcher implements Observer { @Override public void update(Observable observable, Object o) { } }
创建被观察随监听网络状态
public class NetWorkChange extends Observable { public static NetWorkChange mNetWorkChange = null; public static NetWorkChange getNetWorkChange(){ if (mNetWorkChange == null){ mNetWorkChange = new NetWorkChange(); } return mNetWorkChange; } public void notifyDataChange(NetWork work){ setChanged(); notifyObservers(work); } }
创建网络状态数据类
public class NetWork { private boolean wifi; private boolean mobile; private boolean connected; public NetWork() { } public boolean isWifi() { return wifi; } public void setWifi(boolean wifi) { this.wifi = wifi; } public boolean isMobile() { return mobile; } public void setMobile(boolean mobile) { this.mobile = mobile; } public boolean isConnected() { return connected; } public void setConnected(boolean connected) { this.connected = connected; } }
在application中动态注册广播
public class MyAPP extends Application{ private NetChangeState mNetChangeState = new NetChangeState(); @Override public void onCreate() { super.onCreate(); IntentFilter filter = new IntentFilter(); filter.addAction("android.net.conn.CONNECTIVITY_CHANGE"); filter.addAction("android.net.wifi.WIFI_STATE_CHANGE"); filter.addAction("android.net.conn.STATE_CHANGE"); registerReceiver(mNetChangeState,filter); } }