zoukankan      html  css  js  c++  java
  • 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"/>


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

     
  • 相关阅读:
    初识Redis
    一次kafka的offset回退事件及相关知识点
    接口透传
    看懂Oracle执行计划
    Oracle中merge into的使用
    动态规划算法:0/1背包问题 (0/1 Knapsack Problem)
    动态规划算法:硬币找零(Minimum Coin Change)
    链表:按照左右半区的方式重新组合单链表
    链表:删除链表中倒数第K个节点
    链表:合并两个有序链表
  • 原文地址:https://www.cnblogs.com/rokey/p/6156406.html
Copyright © 2011-2022 走看看