Android监测手机网络状态变化的广播

Android U 配置 WiFiCalling 场景下PLMN/SPN 显示的代码逻辑介绍 根据设备的网络连接情况更新状态栏显示的运营商及网络状态。注册上WFC(WiFi Calling)后,支持客制化显示左上角状态栏中的运营商网络状态信息。具体的代码逻辑在CarrierDisplayNameResolver.java。 阅读详情

android手机网络发生改变系统会发出相应的广播,我们只需要注册该广播就可以实时监测手机网络的变化了。

首先我们创建一个广播NetworkChangedReceiver继承系统广播BroadcastReceiver,在onReceive方法中做对应网络变化的处理逻辑就可以了:

public class NetworkChangedReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        int netWorkStates = NetworkUtil.getNetWorkStates(context);
        
        switch (netWorkStates) {
            case NetworkUtil.TYPE_NONE:
                //断网了
                break;
            case NetworkUtil.TYPE_MOBILE:
                //打开了移动网络
                break;
            case NetworkUtil.TYPE_WIFI:
                //打开了WIFI
                break;

            default:
                break;
        }
    }
}

上述代码中使用到了NetworkUtil工具类,详细代码请看NetworkUtil

广播我们已经创建了,接下来注册就可以监听网络状态了,注册广播可以通过代码注册(动态注册)也可以通过清单文件注册(静态注册),下面分别介绍一下:
1. 代码注册:

NetworkChangedReceiver networkChangedReceiver = new NetworkChangedReceiver();
IntentFilter intentFilter = new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION);
registerReceiver(networkChangedReceiver, intentFilter);
注意不要忘记在onDestroy()中解除注册
protected void onDestroy() {
        unregisterReceiver(networkChangedReceiver);
        super.onDestroy();
}
2. 清单文件注册:
<receiver
        android:name=".NetworkChangedReceiver">
        <intent-filter>
            <action android:name="android.net.conn.CONNECTIVITY_CHANGE"/>
        </intent-filter>
</receiver>
两种注册方式均可,可根据项目中实际需求来决定使用其中一种。
警告:

清单文件注册不能适配android7.0及以上(targetSdkVersion ≥ N,清单文件注册失效,亲测没有收到广播)

原因:Android 7.0后台优化  详情请点击

Android 7.0 移除了三项隐式广播(CONNECTIVITY_ACTION、ACTION_NEW_PICTURE 和ACTION_NEW_VIDEO),以帮助优化内存使用和电量消耗。

Android 7.0 应用了以下优化措施:
  1. 面向 Android 7.0 开发的应用不会收到 CONNECTIVITY_ACTION 广播,即使它们已有清单条目来请求接受这些事件的通知。在  前台运行的应用如果使用 BroadcastReceiver 请求接收通知,则仍可以在主线程中侦听 CONNECTIVITY_CHANGE。
  2. 应用无法发送或接收 ACTION_NEW_PICTURE 或 ACTION_NEW_VIDEO 广播。此项优化会影响所有应用,而不仅仅是面向 Android 7.0 的应用。

现在不适配Android 7.0应该不可能了,所以大家就不要考虑清单文件注册了,直接代码动态注册就行了。

如果您对Android 7.0这一变更感觉不适应或者变更限制了您开发的需求,Android 框架提供多个解决方案来缓解对这些隐式广播的需求。例如,JobScheduler API 提供了一个稳健可靠的机制来安排满足指定条件(例如连入无限流量网络)时所执行的网络操作。您甚至可以使用JobScheduler 来适应内容提供程序变化。

Android之监测网络状态的广播 Android之监测手机网络状态的广播 今天具体说下Android检测网络状态的广播,我们在做一些手机应用的时候如果网络发生改变可能会给用户造成一些损失,在中国2G,3G网络都没有普及的情况下,基本都是包流量的,所以在做一些视频应用软件的时候,如果用户在使用WIFI的时候如果无线网络中断,手机网络会自动换手机网络,从而给用户造成不必要的损失。 Android手机在对于一些系统广播,如短 阅读详情

相关推荐

[Android] 实时动态监测网络变化

【需求分析】  当前的App一般都需要与网络进行通信,而这其中一个重要的方面就是能够及时监测处网络状态的变化,因此也就也有本次的需求:动态监测当前手机网络状态的变化,包括以下几个方面:1. 手机无网络到有网络 2. 手机有网络到无网络 3. 手机网络Wifi-> 手机移动网络(2/3/4 G)4.手机移动网络(2/3/4 G)-> 手机网络Wifi【动画效果】通过Toast展示各种状态的变化 【实现

csdn_lexli的博客 1129

安卓源码:广播机制

在Android系统中,广播(BroadCast)是组件之间传播数据(Intent)的一种机制;这些组件甚至是可以位于不同的进程中,这样它就像Binder机制一样,起到进程间通信的作用.BroadcastReceiver也有自己独立的生命周期,但是它又和Activity、Service不同。在发送广播时,可以通过设置属性来将广播定义为前台广播,如果未定义,默认为后台广播。1.广播接受者的生命周期是非常短暂的,在接受到广播的时候创建,onReceive()方法结束后销毁。............

mike_jun的博客 1万+

嵌入式开发:用状态机实现STM32按键消抖,告别阻塞延时

在嵌入式系统开发中,处理异步事件和实时响应是核心挑战。状态机作为一种强大的编程模型,通过定义有限的状态、事件和状态转换规则,将复杂的、非线性的控制逻辑转化为清晰、确定且易于维护的代码结构。其技术价值在于实现逻辑的模块化、异步化和非阻塞化,能显著提升代码的可读性、可扩展性和系统实时性。这一思想广泛应用于协议解析、用户界面交互、传感器数据处理等场景。本文以嵌入式开发中基础的按键处理为例,针对传统“延时消抖”方法会阻塞主循环、影响实时性的痛点,深入讲解如何运用状态机思维重构按键消抖逻辑。通过分析状态机的核心三要素

weixin_33377602的博客 339

android 本地广播 接收,【Anroid学习笔记】 广播接收器的基本使用

概念标准广播一种完全异步执行的广播,所有的广播接收器几乎可以同时收到这条广播,无法被截断。?有序广播一种同步执行的广播,在同一时刻只有一个广播接收器能收到此条广播消息,优先级高的广播接收器先收到广播消息,可以被截断。?接收系统广播注册广播的方式一般有两种,在代码中注册和在AndroidManifest.xml中注册,前者被称为动态注册,后者被称为静态注册。?动态注册优点:可以灵活地控制广播接收器的...

weixin_36333097的博客 403

从论文到生产:iSLIP优先级匹配算法在SDN交换机中的20年演进史

本文回顾了iSLIP优先级匹配算法在SDN交换机中的20年演进历程,从斯坦福大学的原始论文到现代芯片实现。通过独特的指针滑动和迭代循环机制,iSLIP算法显著提升了交换机的吞吐量和公平性,解决了传统FIFO调度的队头阻塞问题。文章详细探讨了算法在硬件实现中的工程挑战、开源实践及未来AI时代的智能调度方向。

weixin_29230649的博客 331

Eigen 直线拟合/曲线拟合/圆拟合/椭圆拟合

使用Eigen库进行直线拟合是数据分析和科学计算中的常见任务,主要通过最小二乘法实现。该代码演示了二维空间中的直线拟合,输出斜率和截距。

深之JohnChen的专栏 1588

四大组件之BroadcastReceiver

广播的两种方式标准广播 一种完全异步执行的广播,在广播发出之后,所有的广播接收器都会在同一时刻接收到这条广播消息,他们之间没有先后顺序,这样的效率比较高,但同时也是无法被截断的。 有序广播 是一种同步执行的广播,在广播发出之后,同一时刻只有一个广播接收器能够接收到这条广播消息,当这个广播接收器重的逻辑执行完毕之后,广播接收器才会继续传递,。所以此时的广播接收器是有顺序的,优先级高的广播接收器就可以先

Hate Bugs 468

Python+Selenium实现抖音博主批量监控:300+账号实时更新通知(附完整代码)

本文详细介绍了如何使用Python和Selenium构建一个高可用的抖音博主批量监控系统。通过架构设计、Cookie管理、高效轮询与差异检测等核心模块,实现300+账号的实时更新追踪与通知。文章提供了完整的代码实现,并重点探讨了性能优化、异常处理及服务器部署等实战经验,帮助开发者打造稳定、可控的自动化监控解决方案。

weixin_29274969的博客 192

模板NetworkChangeReceiver

NetworkChangeReceiver 一个通用的监听网络状态的广播接收器: 可以在Application类中onCreate注册: private void registerNetReceiver() { IntentFilter filter = new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION); NetworkChangeReceiver networkReceiver=new NetworkChangeRecei

coderfc的博客 1165

深度强化学习中的动作屏蔽(Action Masking)

在复杂环境中使用动作屏蔽,实现更好的训练效果

Kiek17的博客 5875

YOLOv8缺陷检测可视化界面实战:PyQt5布局设计与代码实现

本文详细介绍了如何利用PyQt5为YOLOv8缺陷检测模型构建一个专业、易用的可视化界面。通过实战讲解PyQt5的布局管理器设计、信号槽机制与YOLOv8核心的集成,帮助开发者快速将AI模型部署为直观的桌面应用,提升工业质检等场景的落地效率。

redis7keeper的博客 755

Android监测手机网络状态变化的广播(1),分享一点面试小经验

其实Android开发的知识点就那么多,面试问来问去还是那么点东西。所以面试没有其他的诀窍,只看你对这些知识点准备的充分程度。so,出去面试时先看看自己复习到了哪个阶段就好。下图是我进阶学习所积累的历年腾讯、头条、阿里、美团、字节跳动等公司2019-2021年的高频面试题,博主还把这些技术点整理成了视频和PDF(实际上比预期多花了不少精力),包含知识脉络 + 诸多细节以上【历年大厂高级工程师面试题集】、【Android高级进阶教学视频】、【Android高级知识点学习PDF】皆无偿分享给大家。

qd520_1314的博客 762

SPICE仿真软件:Ngspice_(2).安装与配置

在Netlist文件中直接定义模型。V1 1 0 5R1 2 0 1k* Analysis库文件中可以包含多种电路元件模型和参数。

kkchenjj的博客 1585

仿手机QQ网络状态条的显示与消失,没网络时显示,有网络时自动消失 ,点击网络条设置网络

我们都知道手机QQ上有这样一个功能,就是当我们断网,没有网络的时候,聊天列表的上方就会出现一个警告的横条,上面写着"世界上最遥远的距离就是没网,检查设置",然后点击这个横条就会跳转到设置网络的界面,等我们把网络设置好了之后,这个警告横条也就自动的消失了。 今天咱们就来模仿以下这样的功能是如何实现的,话不多少,有图有真相,请看:

做更好的自己 1万+

kaggle学习笔记-餐厅数据挖掘

分析Zomato数据集的基本思想是为了公平地了解影响在班加罗尔不同地方建立不同类型餐厅的因素,每个餐厅的总评级,班加罗尔是这样一个城市,拥有超过12,000家餐厅,餐厅供应来自世界各地的菜肴。每天都有新的餐馆开业,这个行业还没有饱和,需求也在与日俱增。然而,尽管需求不断增加,新餐馆却很难与老牌餐馆竞争。大多数餐厅都供应同样的食物。班加罗尔是印度的IT之都。这里的大多数人主要依靠餐馆的食物,因为他们没有时间自己做饭。由于对餐馆的需求如此巨大,因此研究一个地方的人口统计学就变得很重要。

优快云XXCQ的博客 1862

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

Android开发——监听Android手机的网络状态

0. 前言在Android开发中监听手机的网络状态是一个常见的功能,比如在没网的状态下进行提醒并引导用户打开网络设置,或者在非wifi状态下开启无图模式等等。因此本篇将网上的资料进行了整理总结,方便大家用到的时候可以快速地获取到手机的网络状态,节省时间。1.主动获取之所以叫主动获取,是获取网络状态的时机是我们来定的,因此主动获取的代码位置比较灵活,可以是加载网络数据前,也可以在刚开启AP...

weixin_30691871的博客 147

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

Android之监测手机网络状态的广播

今天具体说下Android检测网络状态的广播,我们在做一些手机应用的时候如果网络发生改变可能会给用户造成一些损失,在中国2G,3G网络都没有普及的情况下,基本都是包流量的,所以在做一些视频应用软件的时候,如果用户在使用WIFI的时候如果无线网络中断,手机网络会自动换手机网络,从而给用户造成不必要的损失。 Android手机在对于一些系统广播,如短信的接收,电话的接收,电池电量过低,网络状态改

伊斯坦堡的博客 669

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

android 监测 程序,Android之监测手机网络状态的广播

今天具体说下Android检测网络状态的广播,我们在做一些手机应用的时候如果网络发生改变可能会给用户造成一些损失,在中国2G,3G网络都没有普及的情况下,基本都是包流量的,所以在做一些视频应用软件的时候,如果用户在使用WIFI的时候如果无线网络中断,手机网络会自动换手机网络,从而给用户造成不必要的损失。Android手机在对于一些系统广播,如短信的接收,电话的接收,电池电量过低,网络状态改变都会发...

weixin_42467445的博客 335

android 使用广播监听网络状态

手机可以随时监听网络状态,如果网络状态发生变化要及时的更新 app 信息通知用户。 实现这个需求,有个较好的办法(个人认为,你一定有更好的办法,希望分享),分享给大家! 随时监听,需要实现一个 service 在后台监听网络状态,那麽如何接收到网络状态发生变化的信息呢? 恩,当然是 BroadcastReceiver. 网络状态发生变化的时候,系统会

hbzh2008的专栏 1万+

BroadReceiver 动态监测网络状态

BroadReceiver 动态监测网络状态  这是开发中

萧萧北keno的专栏 1420

Android之实时监控网络状态

Android项目中,客户端与服务器不时的通过网络对数据交互。访问服务器前,判断当前网络是否可用,以便给予用户提醒。 Android系统中,通过ConnectivityManager来完成对网络的监控管理工作。 ConnectivityManager有四个主要任务: 1、监听手机网络状态(包括GPRS,WIFI, UMTS等) 2、手机状态发生改变时,发送广播 3、当一个网络连接失败时进

行云间 3272
上一篇: Android 判断网络类型(WIFI、MOBILE、NONE)
下一篇: Android中的“再按一次退出程序”代码实现
github_2011
博客等级 码龄10年 116粉丝 56原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值