Broadcast Receiver監聽網絡狀態aa

在代碼中動態註冊,不需要在AndroidManifest.xml裏靜態註冊,靜態註冊在不打開App的情況下,有可以接收到廣播。

public class MainActivity extends Activity {
private IntentFilter intentFilter;
private NetworkChangeReceiver networkChangeReceiver;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
	setContentView(R.layout.activity_main);
	intentFilter = new IntentFilter();
	intentFilter.addAction("android.net.conn.CONNECTIVITY_CHANGE");//監聽網絡的狀態;網絡狀態改變就會被調動。
	networkChangeReceiver = new NetworkChangeReceiver();
	registerReceiver(networkChangeReceiver, intentFilter);
}
@Override
protected void onDestroy() {
	super.onDestroy();
	unregisterReceiver(networkChangeReceiver);
	}
}

創建NetworkChangeReceiver類繼承BroadcaseReceiver

class NetworkChangeReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
//枚舉 enum NetworkStatus {DisConnect,Mobile,Wifi}
	ConfigConstant.NetworkStatus status
	=getConnectType();
	switch(status){
		case DisConnect:
	
		break;
		case Mobile:
	
		break;
		case Wifi:
	
		break;
	}
}
/*
*獲取網絡狀態,
*/
private ConfigConstant.NetworkStatus getConnectType() {
    ConnectivityManager connMgr =(ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);

    NetworkInfo activeInfo = connMgr.getActiveNetworkInfo();

    if (activeInfo != null && activeInfo.isConnected()){
        if (activeInfo.getType() == ConnectivityManager.TYPE_WIFI)
            return ConfigConstant.NetworkStatus.Wifi;
        else if (activeInfo.getType() == ConnectivityManager.TYPE_MOBILE)
            return ConfigConstant.NetworkStatus.Mobile;
    }
    return ConfigConstant.NetworkStatus.DisConnect;
}

網絡狀態一旦發生改變,會調用NetworkChangeReceiver 的onReceive(),再去獲取網絡狀態。
aaaa

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章