Android监听网络变化 二
16lz
2021-01-23
通用的监听网络变化见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"/>
致谢
感谢你的阅读,欢迎点赞和评论!
更多相关文章
- 用Fiddler抓取Android、Iphone网络数据包
- Android中程序与Service交互的方式——总结
- android 下载网络pdf文件后并显示
- 如何使Android应用程序获取系统权限来修改系统时间
- Android中常用的五种布局方式:FrameLayout
- Android 按钮点击事件监听的3重方式
- android 判断当前网络是否可用