1.自定義廣播接收者
package com.onetoo.www.onetoo.receiver;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.util.Log;
/**
* Created by longShun on 2017/2/17.
* desc 網絡相關接收者
*/
public class NetBroadCastReceiver extends BroadcastReceiver {
private static final String TAG = "NetBroadCastReceiver";
@Override
public void onReceive(Context context, Intent intent) {
//如果是在開啓wifi連接和有網絡狀態下
if(ConnectivityManager.CONNECTIVITY_ACTION.equals(intent.getAction())){
ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo networkInfo = cm.getActiveNetworkInfo();
if (networkInfo != null && networkInfo.isAvailable()) {
Log.d(TAG, "onReceive:網絡打開 ");
//todo...相應處理
}
else {
Log.d(TAG, "onReceive:網絡關閉 ");
}
}
}
}
2.代碼中動態註冊
private NetBroadCastReceiver netBroadCastReceiver;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//註冊網絡監聽
netBroadCastReceiver = new NetBroadCastReceiver();
IntentFilter intentFiler = new IntentFilter();
//"android.net.conn.CONNECTIVITY_CHANGE"這個是網絡變化時系統發出的廣播
intentFiler.addAction("android.net.conn.CONNECTIVITY_CHANGE");
registerReceiver(netBroadCastReceiver, intentFiler);
}
@Override
protected void onDestroy() {
super.onDestroy();
//解除註冊
unregisterReceiver(netBroadCastReceiver);
}