import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.os.Bundle;
import android.app.Activity;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.view.Menu;
import android.widget.Toast;
public class MainActivity extends Activity {
private NetworkChangeReceiver networkChangeReceiver;
private IntentFilter intentFilter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
networkChangeReceiver =new NetworkChangeReceiver();
intentFilter = new IntentFilter();
intentFilter.addAction("android.net.conn.CONNECTIVTY_CHANGE");
registerReceiver(networkChangeReceiver, intentFilter);
ConnectivityManager connectionManager = (ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE);
// 獲取代表聯網狀態的NetWorkInfo對象
ConnectivityManager connectivityManager = null;
NetworkInfo networkInfo = connectivityManager.getActiveNetworkInfo();
//獲取當前的網絡連接是否可用
}
@Override
protected void onDestroy() {
// TODO Auto-generated method stub
super.onDestroy();
unregisterReceiver(networkChangeReceiver);
}
class NetworkChangeReceiver extends BroadcastReceiver{
public void onReceiver(Context context, Intent intent){
Toast.makeText(context, "network changes", Toast.LENGTH_SHORT);
}
@Override
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
}
}
動態註冊監聽網絡變化
思路:如何建立一個廣播接收器?
首先在MainActivity中定義一個NetworkChangeReceiver內部類,讓這個類繼承BroadcastReceiver,並重寫父類onReceive(0方法,這樣當網絡發生變化時,onReceive的方法就會執行,這裏只是用Toast提示一下信息。
然後在在OnCreate方法中創建一個IntentFilter的實例,並給它添加一個android.net.conn.CONNECTIVTY_CHANGE的action,(系統發出的廣播就是android.net.conn.CONNECTIVTY_CHANGE的廣播)接下來在建立一個NetworkChangeReceive的實例,然後調用registerReceive的方法來註冊,將NetworkChangeReceive的實例與IntentFilte的實例都傳進來,這樣NetworkChangeReceive就會收到值爲android.net.conn.CONNECTIVTY_CHANGE的廣播
最後需要將動態註冊廣播進行註銷,這裏用onDestroy()方法調用unregisterReceiver()方法來實現