android 监听网络状态
今天,讲讲怎么监听手机网络状态的改变。
一.加入网络权限
获取网络信息需要在AndroidManifest.xml文件中加入相应的权限。
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
二.判断手机网络的几个方案
1)判断是否有网络连接
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;
}
2)判断WIFI网络是否可用
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;
}
4)获取当前网络连接的类型信息
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;
}
在开发android应用时,涉及到要进行网络访问,时常需要进行网络状态的检查,以提供给用户必要的提醒。一般可以通过ConnectivityManager来完成该工作。
ConnectivityManager有四个主要任务:
1、监听手机网络状态(包括GPRS,WIFI, UMTS等)
2、手机状态发生改变时,发送广播
3、当一个网络连接失败时进行故障切换
4、为应用程序提供可以获取可用网络的高精度和粗糙的状态
当我们要在程序中监听网络状态时,只要一下几个步骤即可:
1、定义一个Receiver重载其中的onReceive函数,在其中完成所需要的功能,如根据WIFI和GPRS是否断开来改变空间的外观
connectionReceiver = new BroadcastReceiver() {@Overridepublic void onReceive(Context context, Intent intent) {ConnectivityManager connectMgr = (ConnectivityManager) getSystemService(CONNECTIVITY_SERVICE);NetworkInfo mobNetInfo = connectMgr.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);NetworkInfo wifiNetInfo = connectMgr.getNetworkInfo(ConnectivityManager.TYPE_WIFI);if (!mobNetInfo.isConnected() && !wifiNetInfo.isConnected()) {Log.i(TAG, "unconnect");// unconnect network 这时提示用户网络断开信息}else {// connect network 可以做一些网络请求,刷新界面}}};
2、在适当的地方注册Receiver,可以在程序中注册,在onCreate中调用如下函数即可
IntentFilter intentFilter = new IntentFilter();intentFilter.addAction(ConnectivityManager.CONNECTIVITY_ACTION);registerReceiver(connectionReceiver, intentFilter);
3、在适当时取消注册Receiver,可以在程序中取消,在onDestroye中调用如下函数即可:
if (connectionReceiver != null) {unregisterReceiver(connectionReceiver);}
说了这么多。其实主要是通过ConnectivityManager获取当前的网络状态,或者监听网络状态的改变。这样,当应用需要联网时,网络状态发生改变可以及时提示用户,或者当网络重新连接时自动获取网络数据进行刷新。
android 监听网络状态就讲完了。
就这么简单。
android 监听网络状态相关推荐
- Android实时监听网络状态
Android开发实时监听网络状态变化一般有两种方法: 1. 新建一个基类BasicActivity.class,在基类中注册网络监听广播NetworkChangeReceiver.class,所有页 ...
- Android通过使用系统广播监听网络状态的改变
Android通过使用广播监听网络状态的改变 得先添加权限 //查看网络状态<uses-permission android:name="android.permission.ACCE ...
- Android 监听网络连接状态,判断网络连接方式,9.0网络连接,获取已连接WiFi名称SSID和MAC
获取已连接的WiFi名称 <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/> ...
- Android开发动态的监听网络状态的变化
主要思路:使用Android中的四大组件之:BrocastReceiver监听网络状态的变化.接收到网络状态改变的广播之后判断当前的网络是否可用. 创建广播接收器MyNetworkReceiver p ...
- 初识广播机制(监听网络状态的改变,监听网络是否可以使用)
Android系统中的广播机制比较灵活,因为Android中的每个应用程序都可以对自己感兴趣的广播进行注册,这样该程序就只会接收到自己所关心的广播内容,这些广播可能是来自于系统的,也可能是来自于其他应 ...
- 使用Service和BroadcastReceiver实时监听网络状态
很多时候我们都需要实时监听网络状态,当网络状态发生变化后通知程序实行不同的策略. 这里,我采用Service+BroadcastReceiver的形式实时监听网络变化. 原理是程序在背后启一个Ser ...
- 网络安全netstat监听网络状态。
网络安全netstat监听网络状态. Internet的通用语言是TCP/TP,它是一组协议,它规定在网络的第四层运输层有两种协议TCP.UDP.端口就是这两个协议打开的,端口分为源端口和目的端口,源 ...
- IOS-网络(监听网络状态)
1 // 2 // BWNetWorkTool.h 3 // IOS_0131_检测网络状态 4 // 5 // Created by ma c on 16/1/31. 6 // Copyright ...
- 1.1.14 Electron 监听网络状态
可以用window.addEventListener来进行时间监听网络状态 JavaScript的一种方式进行监听网络状态,监听的事件分别是online和offline. online : 如果链接上 ...
最新文章
- html 右边框变短,HTML / CSS:使边框右侧高度动态化
- RebornDB:下一代分布式Key-Value数据库
- Web开发中的矢量绘图(vml,svg)处理和应用
- lottie android min sdk,跳一个Lottie无法回调开始播放动画事件的坑
- 现代软件工程 作业 2 结对项目
- 10月15日 第一天申请成功
- 力扣-1641. 统计字典序元音字符串的数目
- myBatis之入门示例
- OSChina 周二乱弹 —— 技术宅正确装逼姿势
- 视频教程-【国内首套H3C V7交换机实战课程-1】Comware V7使用、维护与管理-H3C认证
- LABEL MATRIX里用计数器自动生成流水号和自定义条码格式
- 什么是存储过程,存储过程的作用及优点
- 【情感分析:挖掘观点、情感和情绪】读书笔记-01
- C语言题目:打印华氏温度与摄氏温度对照表(for循环思路一)(有能力的同学老师们赞一下呀)
- numpy block创建分块矩阵
- 如何理解statsmodels.ols的输出结果?ols计算的线性回归结果以及手动计算的结果的对比
- 汇编语言中PTR的含义及作用
- libcrypto.so.10(OPENSSL_1.0.2)(64bit) is needed by erlang-22.0.7-1.el7.x86_64
- Linux内核教程(1) - 道路千万条,调试最重要
- 碳中和背景下我国空调系统发展趋势2022(李先庭)
热门文章
- http://www.vpython.org/index-ch.html
- dirname和basename命令
- SDOI 2006 - 保安站岗
- 解决数据库 Table 'content_tags' is marked as crashed and should be repaired 表损坏问题
- iis7 上传限制问题
- step5 . day4 网络编程 基于UDP协议的网络编程流程及API
- [BZOJ1643][Usaco2007 Oct]Bessie's Secret Pasture 贝茜的秘密草坪
- docker三剑客之docker-machine
- Problem H: tmk买礼物
- AngularJs ng-route路由详解