BroadcastReceiver
[java] view plaincopy
1. public class MyReceiver extends BroadcastReceiver {
2. @Override
3. public void onReceive(Context context, Intent intent) {
4. // TODO Auto-generated method stub
5. //Toast.makeText(context, intent.getAction(), 1).show();
6. ConnectivityManager manager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
7. NetworkInfo mobileInfo = manager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
8. NetworkInfo wifiInfo = manager.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
9.
10. if(!mobileInfo.isConnected() && !wifiInfo.isConnected()) {
11. //网络不可以用
12. }else {
13. //网络可用
14. }
15. }
16.
17. }
在清单文件中注册 BroadcastReceiver
[java] view plaincopy
1. <receiver android:name=".MyReceiver">
2. <intent-filter>
3. <action android:name="android.net.conn.CONNECTIVITY_CHANGE"/>
4. </intent-filter>
5. </receiver>
要读取网络状态记得要加权限
[java] view plaincopy
1. <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
程序第一次启动时会收到一个Broadcast
从 GPRS 到 WIFI,程序至少会收到3个Broadcast
第一个是连接到WIFI
第二个是断开GPRS
第三个是连接到WIFI
从WIFI到GPRS,程序至少会收到2个Broadcast
第一个是断开Wifi
第二个是连接到GPRS
/**
* 注册网络状态监听器(广播接收者)
*/
private void registerReceiver(){
IntentFilter filter=new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION);
netStateReceiver=new NetStateReceiver();
this.registerReceiver(netStateReceiver, filter);
}
/**
* 注销网络状态监听器
*/
private void unregisterReceiver(){
if(netStateReceiver!=null){
this.unregisterReceiver(netStateReceiver);
}
}