通用的监听网络变化见Android监听网络变化
这篇文件讲Android SDK版本的不同,监听网络变化方式也不同。

使用BroadcastReceiver

使用广播监听网络变化,这个在Android监听网络变化已经讲过了,详情见Android监听网络变化。

使用requestNetwork

这个是android5.0 sdk 21新添加的API,使用方法如下

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {   ConnectivityManager manager = (ConnectivityManager) getSystemService(CONNECTIVITY_SERVICE);   manager.requestNetwork(new NetworkRequest.Builder().build(),           new ConnectivityManager.NetworkCallback() {               @Override               public void onAvailable(Network network) {                   super.onAvailable(network);                   Log.i("aaa", "监听,网络可用");               }               @Override               public void onLost(Network network) {                   super.onLost(network);                   Log.i("aaa", "监听,网络断开");               }           });}

使用registerDefaultNetworkCallback

这个是android7.0 SDK 24添加的API,使用方法如下

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {   ConnectivityManager manager = (ConnectivityManager) getSystemService(CONNECTIVITY_SERVICE);   manager.registerDefaultNetworkCallback(new ConnectivityManager.NetworkCallback() {       @Override       public void onLost(Network network) {           super.onLost(network);           Log.i("aaa", "注册,网络可用");       }       @Override       public void onAvailable(Network network) {           super.onAvailable(network);           Log.i("aaa", "注册,网络可用");}

取消监听

不管使用requestNetwork方式,还是registerDefaultNetworkCallback方式,取消监听的方式是相同的,使用unregisterNetworkCallback方法,

ConnectivityManager manager = (ConnectivityManager) getSystemService(CONNECTIVITY_SERVICE);manager.unregisterNetworkCallback(new ConnectivityManager.NetworkCallback());

注意

这些API需要申请网络权限,在注册文件添加权限

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

致谢

感谢你的阅读,欢迎点赞和评论!

更多相关文章

  1. 用Fiddler抓取Android、Iphone网络数据包
  2. Android中程序与Service交互的方式——总结
  3. android 下载网络pdf文件后并显示
  4. 如何使Android应用程序获取系统权限来修改系统时间
  5. Android中常用的五种布局方式:FrameLayout
  6. Android 按钮点击事件监听的3重方式
  7. android 判断当前网络是否可用

随机推荐

  1. IE旧版本如何让HTML4转换并且支持HTML5的
  2. PHP选择具有特定宽度的图像并构建网格
  3. 【转载】HTML5 中的一些新特性
  4. 使用img src加载图像会在Mozilla / Chrom
  5. 工作中遇到的几个CSS样式表的问题
  6. 解析HTML前期准备工作备忘
  7. 2016.3.7__HTML 基础_第一天
  8. HTML5--1,html5的生前身后
  9. 大神,你们都在吗???来救救我吧
  10. 如何将每个单词都包含在一个span中,同时保