亦余心之所善兮,虽九死其犹未悔。这篇文章主要讲述Android 通过广播获取网络状态相关的知识,希望能为你提供帮助。
android系统网络连接状态的改变会发一个广播,注册一个广播接收者,实时动态的检测网络状态,及时提醒用户,优化用户体验。
本文仅提供WIFI 状态的检测作为参考,其他网络连接方式请对比WIFI连接作出调整。
首先写一个WifiStateBroadcast类继承BroadcastReceiver,重写onRecevie方法,获取网络连接状态管理器,通过管理器拿到对应的网络信息,得到网络状态,判断网络状态,作出相应的业务逻辑.
1 public class WifiStateBroadCast extends BroadcastReceiver { 2@Override 3public void onReceive(Context context, Intent intent) { 4//获取manager 5ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); 6//获取wifi状态 7NetworkInfo.State state = connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI).getState(); 8if (state != NetworkInfo.State.CONNECTED){ 9Toast.makeText(context,"WIFI已断开连接",Toast.LENGTH_SHORT).show(); 10}else if (state == NetworkInfo.State.CONNECTED){ 11Toast.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 Saving Data
- Android疑难杂症之KillProcess 和System.exit 无效
- JNI_Android 项目中调用.so动态库实现详解
- Xamarin.Android活动的生命周期
- Android 适配知识点
- Android开发实践(Java层与Jni层的数组传递)
- 从Android绘制View小例子中深入理解自定义View
- android jni与java之间数据传输时怎么转换
- CrashHandler for android