Android 通过广播获取网络状态

Posted 乔巴不寂寞

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android 通过广播获取网络状态相关的知识,希望对你有一定的参考价值。

   android系统网络连接状态的改变会发一个广播,注册一个广播接收者,实时动态的检测网络状态,及时提醒用户,优化用户体验。

    
    本文仅提供WIFI 状态的检测作为参考,其他网络连接方式请对比WIFI连接作出调整。
 
    首先写一个WifiStateBroadcast类继承BroadcastReceiver,重写onRecevie方法,获取网络连接状态管理器,通过管理器拿到对应的网络信息,得到网络状态,判断网络状态,作出相应的业务逻辑.
 1 public class WifiStateBroadCast extends BroadcastReceiver {
 2     @Override
 3     public void onReceive(Context context, Intent intent) {
 4         //获取manager
 5         ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
 6         //获取wifi状态
 7         NetworkInfo.State state = connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI).getState();
 8         if (state != NetworkInfo.State.CONNECTED){
 9             Toast.makeText(context,"WIFI已断开连接",Toast.LENGTH_SHORT).show();
10         }else if (state == NetworkInfo.State.CONNECTED){
11             Toast.makeText(context,"WIFI已连接",Toast.LENGTH_SHORT).show();
12         }
13     }
14 }

然后在清单文件中静态注册广播

1   <receiver android:name=".broadcast.WifiStateBroadCast">
2             <intent-filter>
3                 <action android:name="android.net.conn.CONNECTIVITY_CHANGE"/>
4             </intent-filter>
5         </receiver>

不要忘了添加权限

1   <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
2     <uses-permission android:name="android.permission.INTERNET" />
3     <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>


这样当手机网络发生变化的时候,就能及时作出处理,防止某些过于依赖的程序无法正常的工作。

 

 

以上是关于Android 通过广播获取网络状态的主要内容,如果未能解决你的问题,请参考以下文章

Android 博客导航

Android 使用两个不同的代码片段获取当前位置 NULL

如何在android上获取网络状态变化? [复制]

Android连载19-广播机制之网络状态显示

Android如何监听GPS状态变化?

Android开发之广播