• Android实时监听网络状态(2)


    在开发android应用时,涉及到要进行网络访问,时常需要进行网络状态的检查,以提供给用户必要的提醒。一般可以通过ConnectivityManager来完成该工作。

    ConnectivityManager有四个主要任务:

    1、监听手机网络状态(包括GPRS,WIFI, UMTS等)

    2、手机状态发生改变时,发送广播

    3、当一个网络连接失败时进行故障切换

    4、为应用程序提供可以获取可用网络的高精度和粗糙的状态

    当我们要在程序中监听网络状态时,只要一下几个步骤即可:

    1、定义一个Receiver重载其中的onReceive函数,在其中完成所需要的功能,如根据WIFI和GPRS是否断开来改变空间的外观或者提示是否能访问网络

     

    package com.bsharksdk.receiver;
    
    import com.bsharksdk.main.BSharkApi;
    import com.bsharksdk.ui.BSToast;
    
    import android.content.BroadcastReceiver;
    import android.content.Context;
    import android.content.Intent;
    import android.net.ConnectivityManager;
    import android.net.NetworkInfo;
    
    /**
     * @author Javen
     * 
     */
    public class ConnectionChangeReceiver extends BroadcastReceiver {
        @Override
        public void onReceive(Context context, Intent intent) {
            ConnectivityManager connectivityManager=(ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
            NetworkInfo  mobNetInfo=connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
            NetworkInfo  wifiNetInfo=connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
            
            if (!mobNetInfo.isConnected() && !wifiNetInfo.isConnected()) {
                BSToast.showLong(context, "网络不可以用");
                //改变背景或者 处理网络的全局变量
            }else {
                //改变背景或者 处理网络的全局变量
            }
        }
    }

    2、在适当的地方注册Receiver,可以在程序中注册,在onCreate中调用如下函数即可:

    private  void registerReceiver(){
            IntentFilter filter=new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION);
            myReceiver=new ConnectionChangeReceiver();
            this.registerReceiver(myReceiver, filter);
        }

    3、在适当时取消注册Receiver,可以在程序中取消,在onDestroye中调用如下函数即可:

    private  void unregisterReceiver(){
            this.unregisterReceiver(myReceiver);
        }

       记得在 Activity中 设置变量 private ConnectionChangeReceiver myReceiver;

       记得添加访问网络需要的权限

      

      <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
        <uses-permission android:name="android.permission.INTERNET" />
  • 相关阅读:
    ES6 Promise 对象及解决回调地狱问题
    ES6 Iterator迭代器和for...of循环
    ES6 Reflect反射
    ES6 Proxy代理
    ES6 Map对象与Set对象
    端口隔离的应用场景与配置
    交换机级联,堆叠,集群技术介绍
    OSPF虚连接简单配置
    小结ospf基本配置的三个参数
    静态路由配置的3个参数
  • 原文地址:https://www.cnblogs.com/zyw-205520/p/3831185.html
Copyright © 2020-2023  润新知