美文网首页
android对网络状态的监听

android对网络状态的监听

作者: ___刘辉良 | 来源:发表于2015-09-13 00:35 被阅读1432次

<small>
在android开发中,对网络状态的监听是非常重要的。比如在WIFI情况下,加载高清的图片。在3G和4G的情况下加载图片质量比较差的图片。那么怎样对android网络状态进行监听呢?

首先加上需要加的权限:

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

然后我们就可以编写一个对网络状态进行判断的工具类:NetUtils

//网络是否可用
public static boolean isNetworkAvailable(Context context) {
    ConnectivityManager mgr = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
    NetworkInfo[] info = mgr.getAllNetworkInfo();
    if (info != null) {
        for (int i = 0; i < info.length; i++) {
            if (info[i].getState() == NetworkInfo.State.CONNECTED) {
                return true;
            }
        }
    }
    return false;
}

//网络是否连接
public static boolean isNetworkConnected(Context context) {
    if (context != null) {
        ConnectivityManager mConnectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
        NetworkInfo mNetworkInfo = mConnectivityManager.getActiveNetworkInfo();
        if (mNetworkInfo != null) {
            return mNetworkInfo.isAvailable();
        }
    }
    return false;
}

//是否是WIFI的情况下
public static boolean isWifiConnected(Context context) {
    if (context != null) {
        ConnectivityManager mConnectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
        NetworkInfo mWiFiNetworkInfo = mConnectivityManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
        if (mWiFiNetworkInfo != null) {
            return mWiFiNetworkInfo.isAvailable();
        }
    }
    return false;
}

//3G网络
public static boolean isMobileConnected(Context context) {
    if (context != null) {
        ConnectivityManager mConnectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
        NetworkInfo mMobileNetworkInfo = mConnectivityManager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
        if (mMobileNetworkInfo != null) {
            return mMobileNetworkInfo.isAvailable();
        }
    }
    return false;
}  

这个工具类用来判断网络的一些状态,然后我们需要一个广播接收者,来接收网络的变化

需要在AndroidManifest.xml文件中注册:
   <receiver android:name=".NetStateReceiver">

        <intent-filter>
            <action android:name="android.net.conn.CONNECTIVITY_CHANGE"></action>

        </intent-filter>
    </receiver>

最后就可以着手对网络变化进行监听了:

public class NetStateReceiver extends BroadcastReceiver {

        private final static String ANDROID_NET_CHANGE_ACTION = "android.net.conn.CONNECTIVITY_CHANGE";

        @Override
        public void onReceive(Context context, Intent intent) {
            if (intent.getAction().equalsIgnoreCase(ANDROID_NET_CHANGE_ACTION)) {
                if (NetUtils.isNetworkAvailable(context)) {
                    //Wifi情况下
                    if (NetUtils.isWifiConnected(context)) {
                        Log.d("same_info>>", "net wifi");
                    }
                    //数据流量的情况下
                    else {
                        Log.d("same_info>>", "net data");
                    }
                } else {
                    Log.d("same_info>>", "net error");
                }
            }
        }
    }

<small>

相关文章

  • android对网络状态的监听

    在android开发中,对网络状态的监听是非常重要的。比如在WIFI情况下,加载高清的图片。在3G和4G的情况下加...

  • Android监听网络连接状态变化

    对于Android监听网络连接状态变化,网上太多这类资料了,而且对于网络连接状态和网络开关状态很容易混淆不清。 对...

  • Android监听网络状态

    几乎所有的安卓应用都会用到网络,除去极少数纯单机的应用。而在应用使用网络的过程中,必然会收到网络状态的影响。特别是...

  • Android网络状态监听

    1.添加权限 2.获取ConnectivityManager 3监听网络状态 网络监听广播

  • Android 检测网络类型及是否能用

    Android 中网络连接检测和使用ping检测网络是否可访问Android:检测网络状态&监听网络变化 获得Co...

  • Android 判断网络连接状态

    在Android上,我们需要对不同的网络情况做出一些操作。官方提供了监听网络状态变化的广播,用来监听网络的变化情况...

  • (笔记)Android监听网络状态

    在Android中对于网络状态的监听,这里做最简单的一种。直接上步骤:1、首先在Activity或者Fragmen...

  • Android广播监听网络状态

    1.先说一下广播,广播分为两种:静态广播和动态广播。静态广播即是静态注册的,而动态广播是代码动态注册。静态注册是通...

  • Android网络状态变化监听

    Android网络状态监听实现 功能分析 背景介绍 为了给用户一个好的使用体验,尤其是一些视频、图片类型的app,...

  • Android监听网络状态框架

    先来写个最简单的框架吧。最普通的素质三连。1.加权限 2. 注册广播 3.添加回调 就这么简单,让我们开始吧。 看...

网友评论

      本文标题:android对网络状态的监听

      本文链接:https://www.haomeiwen.com/subject/rxnpcttx.html