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

Android-NetworkState一个轻量级的网络状态监听库方便实用 Android即时网络监听库,只需几行代码就可得到当前网络状态为wifi还是GPRS或是网络连接还是网络断开,监听犹如EventBus那般优雅。 立即下载

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

Android手机在对于一些系统广播,如短信的接收,电话的接收,电池电量过低,网络状态改变都会发一个广播,既然系统会发送一条广播,那么就需要一个接收器来处理这个广播。首先定义一个类继承NetworkChangeReceiver,重写onReceive()就行了。然后在OnReceive()这个方法进行相应广播的处理。

网络状态切换的广播类:

[java]  view plain  copy
  1. package com.test;  
  2.   
  3. import android.content.BroadcastReceiver;  
  4. import android.content.Context;  
  5. import android.content.Intent;  
  6. import android.net.ConnectivityManager;  
  7. import android.net.NetworkInfo.State;  
  8.   
  9. public class extends BroadcastReceiver {  
  10.   
  11.     @Override  
  12.     public void onReceive(Context context, Intent intent) {  
  13.         State wifiState = null;  
  14.         State mobileState = null;  
  15.         ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);  
  16.         wifiState = cm.getNetworkInfo(ConnectivityManager.TYPE_WIFI).getState();  
  17.         mobileState = cm.getNetworkInfo(ConnectivityManager.TYPE_MOBILE).getState();  
  18.         if (wifiState != null && mobileState != null  
  19.                 && State.CONNECTED != wifiState  
  20.                 && State.CONNECTED == mobileState) {  
  21.             // 手机网络连接成功  
  22.         } else if (wifiState != null && mobileState != null  
  23.                 && State.CONNECTED != wifiState  
  24.                 && State.CONNECTED != mobileState) {  
  25.             // 手机没有任何的网络  
  26.         } else if (wifiState != null && State.CONNECTED == wifiState) {  
  27.             // 无线网络连接成功  
  28.         }  
  29.   
  30.     }  
  31.   
  32. }  

在上面这个接收类中OnReceive()方法,你可以在上面三个网络状态(只有手机网络,只有无线网络,没有任何网络)中进行相应的处理,然后在应用中注册广播,注册广播有2种方式,一种在androidmanifest.xml中注册,一种在java代码中注册。

第一种:

[html]  view plain  copy
  1. <receiver  
  2.     android:name="com.test.NetworkBroadcast"  
  3.     android:label="NetworkConnection" >  
  4.     <intent-filter>  
  5.         <action android:name="android.net.conn.CONNECTIVITY_CHANGE" />  
  6.     </intent-filter>  
  7. </receiver>  


第二种:

可以在Activity的onCreate()方法中注册广播,在Activity的onDestory()方法中卸载广播。

[java]  view plain  copy
  1. private BroadcastReceiver networkBroadcast=new BroadcastReceiver();  
[java]  view plain  copy
  1.         private void registerNetworkReceiver() {  
  2.     IntentFilter filter = new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION);  
  3.     this.registerReceiver(networkBroadcast, filter);  
  4. }  
  5.   
  6. private void unRegisterNetworkReceiver() {  
  7.         this.unregisterReceiver(networkBroadcast);  
  8. }  

注意:在接收类中的onReceive()方法中不要处理太多复杂逻辑问题,尤其耗时的操作。



 

Android移动开发检测网络状态并使用BroadcastReceiver(广播接收者)进行接收网络变化的后续处理 立即下载

相关推荐

Android网络状态变动监听

实现android不同系统版本网络变动监听,2G和3G网络已经处理了显示无网络,主要监听无网络,4G,WIFI,以太网

Android通过广播形式实现实时监听网络状态

首先在AndroidMainfests - 添加权限。最后是在activity里面的动态注册。然后是网络监听的广播。废话不多说直接上代码。

杰森丶郭达斯坦森的博客 2988

Android BroadcastReceiver实现网络状态实时监听

主要为大家详细介绍了Android BroadcastReceiver实现网络状态实时监听,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

Android开发 网络检测(使用广播监听)

比较简单的检测网络: 1 /** 2 * 检查网络是否连接 3 * @param context 4 * @return 5 */ 6 public boolean isNetworkConnected(Context context) { 7 if (context != null) { 8 ConnectivityM...

asdas4120的博客 138

Android 广播监听网络状态详解及实例代码

主要介绍了Android 广播监听网络状态详解及实例代码的相关资料,需要的朋友可以参考下

PC微信逆向:破解聊天记录文件!_读取别人pc微信msg文件

本文详细介绍了PC版微信数据库的解密方法,总结了前人经验并补充了关键细节。通过OllyDbg调试工具从微信内存中获取32字节加密密钥,使用C++结合OpenSSL库实现解密程序。重点解决了开发环境配置问题,包括Visual Studio项目设置和OpenSSL库的版本适配,将原本固定的数据库路径改为参数化输入,提高了工具的通用性。该方案为电子取证中的微信数据提取提供了完整的技术路径,避免了研究者重复探索已解决的问题。

zz96405784848的博客 9748

Android检测网络状态&监听网络变化

网络状态改变、用户信息改变(帐户的钱),第一时间就要想到用观察者模式来实现 广播接收者,简单地把网络的变化通过接口抛出去 package com.qkt.face.et.receiver; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.

guodashen007的博客 1万+

SpringBoot文件上传实战:MultipartFile重复读取的3种方法(附避坑指南)

本文详细介绍了SpringBoot中处理MultipartFile重复读取的3种实用方法,包括字节数组缓存法、临时文件法和流重置法,并提供了避坑指南和性能优化技巧。特别适合需要多次读取上传文件内容的开发者,帮助解决InputStream流只能读取一次的问题。

weixin_28710999的博客 398

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

android手机网络发生改变系统会发出相应的广播,我们只需要注册该广播就可以实时监测手机网络的变化了。 首先我们创建一个广播NetworkChangedReceiver继承系统广播BroadcastReceiver,在onReceive方法中做对应网络变化的处理逻辑就可以了: public class NetworkChangedReceiver extends BroadcastRec

github_2011的博客 1万+

Android 关于佳博和汉印蓝牙热敏打印机开发,Android程序员必经的实践之路

针对于上面的问题,我总结出了互联网公司Android程序员面试涉及到的绝大部分面试题及答案,并整理做成了文档,以及系统的进阶学习视频资料。(包括Java在Android开发中应用、APP框架知识体系、高级UI、全方位性能调优,NDK开发,音视频技术,人工智能技术,跨平台技术等技术资料),希望能帮助到你面试前的复习,且找到一个好的工作,也节省大家在网上搜索资料的时间来学习。《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!

2401_84149570的博客 1021

自适应滤波算法综述

自适应滤波算法综述

xdzhujy的博客 5万+

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

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

weixin_33941707的博客 247

raw_count、tpm、fpkm、rpkm如何选择

转录组测序中常见的数据类型有:raw_count、tpm、fpkm、rpkm。本文进行简单辨析: 一、概念 1 raw_count RNA-seq数据中,raw_count一般是指mapped到基因外显子区域的reads数目。比如说htseq,STAR,或者RSEM等NGS分析流程计算产生的counts值。其中RSEM(RNA-Seq by Expectation-Maximization),考虑到一条read 可能会匹配多个exon位置,故而其产生的为expected_count。 2 TPM

weixin_59289660的博客 1万+

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

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

qd520_1314的博客 762

2025 高效抓取雪球社区数据:自动化导出Excel与PDF全攻略

本文详细介绍了2025年高效自动化抓取雪球社区数据的完整方案。通过Python脚本,用户可自动抓取帖子列表数据并导出为结构化的Excel表格,同时批量将帖子内容保存为PDF文档,并支持合并与添加书签,极大提升投资研究和信息整理的效率。

weixin_29034963的博客 690

揭秘Synopsys EDA中的AI黑科技:DSO.ai如何改变传统芯片设计流程

本文深入探讨了Synopsys EDA中的AI黑科技DSO.ai如何革新传统芯片设计流程。通过数据驱动的方法论、功耗优化革命和时序收敛智能加速,DSO.ai显著提升了设计效率和质量,实现了从经验驱动到AI驱动的范式转变。文章还提供了实战指南,帮助团队跨越AI EDA的实施鸿沟。

weixin_29296241的博客 523
上一篇: java基础学习GUI编程
下一篇: handler引起内存泄露
rongbinjava
博客等级 码龄11年 15粉丝 83原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值