1.添加消息
IntentFilter filter = new IntentFilter();
filter.addAction(ConnectivityManager.CONNECTIVITY_ACTION); //网络连接消息
filter.addAction(EthernetManager.ETH_STATE_CHANGED_ACTION); //以太网消息
this.registerReceiver(receiver, filter);
2.接收广播
private BroadcastReceiver receiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
final String action = intent.getAction(); //得到广播意图
if (ConnectivityManager.CONNECTIVITY_ACTION.equals(action)) { //检查网络状态
Log.i(TAG, "ConnectivityManager.CONNECTIVITY_ACTION ");
NetworkInfo info = intent.getParcelableExtra(ConnectivityManager.EXTRA_NETWORK_INFO);
if(info == null){
// Toast.makeText(context, "Network connection successfully!", Toast.LENGTH_LONG).show();
}
int type = info.getType();
State st;
android.net.NetworkInfo.State state = info.getState(); //得到此时的连接状态
if(type == ConnectivityManager.TYPE_MOBILE){ //判断网络类型
Log.i(TAG, "TYPE_MOBILE ");
if(state == android.net.NetworkInfo.State.CONNECTED){ //判断网络状态
Log.e(TAG, "android.net.NetworkInfo.State.CONNECTED");
} else if(state == android.net.NetworkInfo.State.DISCONNECTED){
Log.e(TAG, "android.net.NetworkInfo.State.DISCONNECTED");
}
}else if(type == ConnectivityManager.TYPE_WIFI){ //WiFi
Log.i(TAG, "TYPE_WIFI ");
if(state == android.net.NetworkInfo.State.CONNECTED){ //判断网络状态
Log.e(TAG, "android.net.NetworkInfo.State.CONNECTED");
} else if(state == android.net.NetworkInfo.State.DISCONNECTED){
Log.e(TAG, "android.net.NetworkInfo.State.DISCONNECTED");
}
}else if(type == ConnectivityManager.TYPE_ETHERNET){
Log.i(TAG, "TYPE_ETHERNET ");
if(state == android.net.NetworkInfo.State.CONNECTED){ //判断网络状态
Log.e(TAG, "android.net.NetworkInfo.State.CONNECTED");
Toast.makeText(context, "Network connection successfully!", Toast.LENGTH_LONG).show();
} else if(state == android.net.NetworkInfo.State.DISCONNECTED){
Log.e(TAG, "android.net.NetworkInfo.State.DISCONNECTED");
}
}
} else {
Log.e(TAG, "other android.net.NetworkInfo.State");
}
}
};