android 监听网络连接状态的改变

本文介绍如何在Android应用中使用BroadcastReceiver监听网络状态的变化,包括从GPRS到WIFI的切换,以及如何在程序启动时接收到网络状态变化的广播。重点阐述了如何在清单文件中注册BroadcastReceiver,并在代码中读取网络状态,同时强调了需要获取ACCESS_NETWORK_STATE权限。通过实例演示了在网络状态改变时的不同处理逻辑。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

android 监听网络连接状态的改变



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);

      }

       

    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值