Android網絡應用程序開發中,常常要判斷網絡鏈接是否可用,所以常常有必要監聽網絡狀態的變化。html
Android的網絡狀態監聽能夠用BroadcastReceiver來接收網絡狀態改變的廣播,具體實現以下:網絡
[html] view plaincopyapp
public class ConnectionChangeReceiver extends BroadcastReceiver { ide
private static final String TAG =ConnectionChangeReceiver.class.getSimpleName(); spa
@Override .net
public void onReceive(Context context, Intent intent) { orm
Log.e(TAG, "網絡狀態改變"); htm
boolean success = false; blog
//得到網絡鏈接服務 ip
ConnectivityManager connManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
// State state = connManager.getActiveNetworkInfo().getState();
// 獲取WIFI網絡鏈接狀態
State state = connManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI).getState();
// 判斷是否正在使用WIFI網絡
if (State.CONNECTED == state) {
success = true;
}
// 獲取GPRS網絡鏈接狀態
state = connManager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE).getState();
// 判斷是否正在使用GPRS網絡
if (State.CONNECTED != state) {
success = true;
}
if (!success) {
Toast.makeText(context, context.getString(R.string.your_network_has_disconnected), Toast.LENGTH_LONG).show();
}
}
使用方式一:
1. 在Activity的onCreate中:
//註冊網絡監聽
IntentFilter filter = new IntentFilter();
filter.addAction(ConnectivityManager.CONNECTIVITY_ACTION);
registerReceiver(mNetworkStateReceiver, filter);
2. 在Activity中的onDestroy中:
//取消監聽
unregisterReceiver(mNetworkStateReceiver);
使用方式二:
1. 應用啓動時,啓動Service,在Service的onCreate方法中註冊網絡監聽:
//註冊網絡監聽
IntentFilter filter = new IntentFilter();
filter.addAction(ConnectivityManager.CONNECTIVITY_ACTION);
registerReceiver(mNetworkStateReceiver, filter);
2. 應用退出時,Service關閉,在Service的onDestroy方法中取消監聽://取消監聽unregisterReceiver(mNetworkStateReceiver);