想要在程序中随时随地的知道当前网络是否可用,其实实现起来很简单。

咱们只需要用到广播接收者这个组件即可,并且调用一下系统的一个服务就可以知道啦。因为当网络状态发生变化时,系统会发送一条网络状态变化的广播到公共消息区,然后监听这条广播的接收者就会收到这条消息,这时你就可以做出自己想做的操作啦。

我们采用动态注册广播接收者的方法对活动进行注册。不过首先得自定义一个接收者的工具类,具体步骤如下:

1.自定义一个广播接收者类,继承自BroadcastReceiver类,一般可以把这个类写成内部类,这个类有个onReceived方法需要重写。也就是说当这个广播接收者收到广播时,可以在这个方法里进行一些逻辑处理。

public class MainActivity extends Activity implements View.OnClickListener{private IntentFilter intentFilter;private NetworkChangeReceiver networkChangeReceiver;class  NetworkChangeReceiver extends BroadcastReceiver{//网络变化接收者@Overridepublic void onReceive(Context context, Intent intent) {ConnectivityManager connectivityManager = (ConnectivityManager)getSystemService(MainActivity.CONNECTIVITY_SERVICE);NetworkInfo networkInfo = connectivityManager.getActiveNetworkInfo();if(networkInfo!=null && networkInfo.isAvailable())Toast.makeText(MainActivity.this, "当前网络可用", Toast.LENGTH_SHORT).show();else {Toast.makeText(MainActivity.this, "当前网络不可用", Toast.LENGTH_SHORT).show();}}}@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main_layout);}
}

2.在具体的活动中动态注册广播接收者,最好在活动的onCreate方法中进行注册:

public class MainActivity extends Activity implements View.OnClickListener{private IntentFilter intentFilter;private NetworkChangeReceiver networkChangeReceiver;class  NetworkChangeReceiver extends BroadcastReceiver{//网络变化接收者@Overridepublic void onReceive(Context context, Intent intent) {ConnectivityManager connectivityManager = (ConnectivityManager)getSystemService(MainActivity.CONNECTIVITY_SERVICE);NetworkInfo networkInfo = connectivityManager.getActiveNetworkInfo();if(networkInfo!=null && networkInfo.isAvailable())tip_textview.setVisibility(View.GONE);else {tip_textview.setVisibility(View.VISIBLE);}}}@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main_layout);//注册广播接收者,监测网络变化intentFilter = new IntentFilter();intentFilter.addAction("android.net.conn.CONNECTIVITY_CHANGE");networkChangeReceiver = new NetworkChangeReceiver();registerReceiver(networkChangeReceiver , intentFilter);}
}

3.动态注册的广播接收器一定都要取消注册才行,否则程序可能会出现异常。这里我们在onDestroy方法中通过调用unregisterReceiver方法来实现。

protected void onDestroy(){super.onDestroy();unregisterReceiver(networkChangeReceiver);//注销广播接收者}

4.最后一步很关键,我们需要在AndroidManifest.xml文件中声明权限。

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

至此,这个活动应该就可以监听网络转态的变化啦

安卓随时监测网络状态,判断当前网络是否可用相关推荐

  1. android怎么判断当前网络是否可用,Android 判断当前网络是否可用简单实例

    Android 判断当前网络是否可用简单实例 用户手机当前网络可用:WIFI.2G/3G网络,用户打开与不打开网络,和是否可以用是两码事.可以使用指的是:用户打开网络了并且可以连上互联网进行上网. 首 ...

  2. 转:Android判断当前网络是否可用--示例代码

    在Android平台上开发基于网络的应用,必然需要去判断当前的网络连接情况.下面的代码,作为例子,详细说明了对于当前网络情况的判断. 先看一个自己定义的应用类. 源码copy to clipboard ...

  3. android 判断网络是否可用

    今天也是没有什么好写的,但是自己的强迫症似乎又犯了,觉得每天写博客的习惯不能改,所以在网上搜索了资料,写了这些内容. 一.检查网络是否可用,并且弹出提示框,用户可以去设置网络. package com ...

  4. 安卓实现判断手机网络连接状态是否联网,连接的是移动流量数据还是WIFI连接

    安卓实现判断手机网络连接状态是否联网,连接的是移动流量数据还是WIFI连接 开门见山地说,安卓APP在实际开发应用场景中很容易遇到需要判断网络连接状态的需求,毕竟对于手机APP来说,没有网络的情况并不 ...

  5. ios 检测是否联网_iOS 判断当前网络状态的三种方法

    在项目中,为了好的用户体验,有些场景必须线判断网络状态,然后才能决定改干嘛.比如视频播放,需要线判断是Wifi还是4G,Wifi直接播放,4G先提示用户.获取网络状态的方法大概有三种: 1. Reac ...

  6. Android实时监测网络连接状态及网络是否可用,类似微信的功能。

    实现实时监控网络变化,类似于微信的功能,当网络不可用时app能实时感知到,网上找了很多例子并不能实现,或者只实现其中一部分功能,我就参考大家的方法做一个组合. 一.网络状态变化监测,此方式只能监测网络 ...

  7. js判断wifi_使用JS在浏览器中判断当前网络连接状态的几种方法

    使用JS在浏览器中判断当前网络状态的几种方法如下: 1. navigator.onLine 2. ajax请求 3. 获取网络资源 4. bind() 1. navigator.onLine 通过na ...

  8. Android之判断设备网络连接状态,并判断连接方式

    在Android开发过程中,对于一个需要连接网络的Android设备,对设备的网络状态检测是很有必要的!有很多的App都需要连接网络.判断设备是否已经连接网络,并且在连接网络的状态下判断是wifi无线 ...

  9. android之网络状态判断(wifi和移动网络数据)

    有时候需要监听网络的状态变化来及时提醒用户网络状况,因此我们得多各种网络变化进行监听,废话不多说,将网络各种情况都在代码中列出来了,有需求的可以根据实际情况进行提示. 1.首先需要进行广播的监听,网络 ...

最新文章

  1. OPENCV图像创建,保存和复制
  2. python是烂语言吗
  3. QT的QUndoCommand类的使用
  4. 手把手教你用CAB发布OCX的简单办法
  5. CSDN社区之星专訪:我的蜕变之路
  6. PAT乙级 1020 月饼
  7. web系统备份mysql_学会自动备份MYSQL和WEB的数据
  8. ssm配置文件引用细节
  9. JAVA高并发工作笔记0002---高并发编程之使用ThreadFactory来创建新的线程
  10. ------表达式---数值表示/算术运算符
  11. 《Python参考手册(第4版•修订版)》——1.8 集合
  12. 6.5 XGBoost实战
  13. webstorm汉化之后出现乱码现象
  14. 连点器android版本,连点器安卓手机版
  15. 【转】弹出USB大容量存储设备时出问题的解决方法
  16. excel 将日期转换为8位数字
  17. 程序员夏天穿格子衫,那么冬天穿什么?
  18. 100个英语超精简口语短句
  19. IOS 调用第三方地图APP导航
  20. Ubuntu下图片转pdf和pdf合并

热门文章

  1. 准确率、召回率、F值简介
  2. Gitea--优秀的轻量级代码托管平台
  3. vue+django前后端分离之hippo后端初始化
  4. 22_国际短信国家代码sql脚本
  5. Everspin MRAM替换FRAM
  6. 号码标记查询 php,这些用户可在线查询号码标记、清除标记
  7. 第七次人口普查数据背后的玄机,你看懂了吗?
  8. 魅族魅蓝Flyme系统在AndroidStudio不显示Logcat
  9. 唐僧师徒用了手机之后
  10. 基于AT89C51单片机的电子万年历系统