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
- android网络监听和网络类型判断
- android 网络实时监听网络状态变化 及 网络类型判断
- Android网络类型判断
- android 判断 网络 类型
- Android 判断网络类型
- Android网络类型判断
- Android 网络类型判断
- Android网络类型判断
- Android网络判断是否连接和网络类型
- iOS 怎么实现监听网络断开和链接上,其次是怎么判断网络的类型??????????
- Android 的网络判定(网络连接类型和监听网络连接变化)
- 通过广播实现网络监听及判断网络类型
- android判断网络的类型
- android判断用户网络类型
- Android 判断手机网络类型
- Android判断当前网络类型
- android:判断手机网络类型
- Android之判断网络类型
- 关于结构体字节对齐的一些感悟
- LaTex笔记(一)
- eclipse+scala+java+maven 整合实践
- 空指针异常解析
- Java - Collection——HashMap
- android网络监听和网络类型判断
- Linux汇编教程03:大小比较操作
- 设计模式-单例模式(Singleton)各种写法和分析比较
- Day 84:Again start from zero--php Laravel
- MVN注意的小点
- 最少
- C语言学生信息管理器
- 同一表单不同提交
- 为什么一些机器学习模型需要对数据进行归一化?