android网络监听和网络类型判断

来源:互联网 发布:windows自带的录音机 编辑:程序博客网 时间:2024/06/09 15:48

app应用进行实时网络监听

多话不说直接上最简单的代码

首先写一个类继承我们的BroadcastReceiver 在里面的onReceive里面写我们的逻辑代码

public class NetworkStateReceiver extends BroadcastReceiver {

@Overridepublic void onReceive(final Context context, Intent intent) {    if (intent.getExtras() != null) {        NetworkInfo ni = (NetworkInfo)    intent.getExtras().get(ConnectivityManager.EXTRA_NETWORK_INFO);        if (ni != null && ni.getState() == NetworkInfo.State.CONNECTED) {            ToastUtil.show("网络连接已恢复~");              //可以再这里进行一些网络突然断开未完成的操作                     } else         {            ToastUtil.show("网络连接已断开~");            Timber.i("网络断开 关闭 PublishService");            PublishService.stop();        }    }}

}

写好了此类之后我们在清单文件中也就是AndroidMainfest文件中添加服务:

    <!-- 网络状态变化广播监听 -->        <receiver android:name="类的路劲包名.NetworkStateReceiver">            <intent-filter>                <action android:name="android.net.conn.CONNECTIVITY_CHANGE"/>                <category android:name="android.intent.category.DEFAULT"/>            </intent-filter>        </receiver>

简单的网络监听就那么完成了。在我们的广播类里面其实也就调用了NetworkInfo这个类而已,上面的操作也只是判断了是否有网络,那如何区别当前连接网络到底是wifi还是移动网络呢:下面看代码:

public static int getConnectedType(Context context) {      if (context != null) {          ConnectivityManager mConnectivityManager =                       (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);          NetworkInfo mNetworkInfo = mConnectivityManager.getActiveNetworkInfo();          if (mNetworkInfo != null && mNetworkInfo.isAvailable()) {              return mNetworkInfo.getType();          }      }      return -1;  }  

看到最后返回的是NetworkInfo 的getType()方法这个方法能够返回
返回
int 一TYPE_MOBILE,TYPE_WIFI,TYPE_WIMAX,TYPE_ETHERNET, TYPE_BLUETOOTH,连接类型的信息给我们当然我们也可以用mNetworkInfo.getTypeName 返回的是String 类型“wifi”或者”手机网络”的信息;

最后再来判断一下wifi是否可用移动网络是否可用

//因为最后我们获取网络类型之后最后判断是否有网络是用NetworkInfo方法的isAvailable方法这个方法是boolean类型所以我们最后也要返回boolean类型public 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;  }  //判断移动网络是否可用public 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;  }  

最后ConnectivityManager 这个类其实也是管理网络连接相关的类这里写图片描述
如果你觉得文章有点用就点个赞吧

0 0
原创粉丝点击