关于wifi连接与断开的监测
2016-03-23 13:47
429 查看
网上关于wifi打开或者关闭的监听例子还是比较多的,但是关于wifi连接到某一个point或者从某一个point断开的监听却比较少。经过研究,终于找到了对应得API。分享给大家。
下边直接上代码:
说明:这里是直接在Application里边注册的广播。代码注释已近很详细了,大家自己看。
isNetWorkConnected这个变量代表当前wifi是连接还是断开。
下边直接上代码:
说明:这里是直接在Application里边注册的广播。代码注释已近很详细了,大家自己看。
isNetWorkConnected这个变量代表当前wifi是连接还是断开。
package com.benxun; import android.app.Application; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.net.ConnectivityManager; import android.net.NetworkInfo; import android.net.wifi.WifiManager; import android.util.Log; import android.widget.Toast; public class AppApplication extends Application { private boolean isNetWorkConnected = false; public boolean isNetWorkConnected() { return isNetWorkConnected; } IntentFilter wifiFilter; BroadcastReceiver receiver; @Override public void onCreate() { ConnectivityManager connectivityManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo networkInfo = connectivityManager.getActiveNetworkInfo(); if (networkInfo != null) { isNetWorkConnected = networkInfo.isConnected(); } wifiFilter = new IntentFilter(); // 监听wifi enabled, disabled, enabling, disabling, or unknown状态 wifiFilter.addAction(WifiManager.NETWORK_STATE_CHANGED_ACTION); wifiFilter.addAction(WifiManager.WIFI_STATE_CHANGED_ACTION); // wifiFilter.addAction(WifiManager.EXTRA_SUPPLICANT_CONNECTED); receiver = new MyReciver(); registerReceiver(receiver, wifiFilter); super.onCreate(); } /** * 当终止利用程序对象时调用,不保证1定被调用,当程序是被内核终止以便为其他利用程序释放资源,那 * 么将不会提示,并且不调用利用程序的对象的onTerminate方法而直接终止进 程 */ @Override public void onTerminate() { unregisterReceiver(receiver); receiver = null; super.onTerminate(); } /** * WIFI广播接收者 * * @author Administrator */ class MyReciver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { /** * wifi打开或者关闭的广播。当应用第一次打开的时候会接收到该广播 */ // if (intent.getAction() // .equals(WifiManager.WIFI_STATE_CHANGED_ACTION)) { // int stat = intent.getIntExtra(WifiManager.EXTRA_WIFI_STATE, -1); // // switch (stat) { // // case WifiManager.WIFI_STATE_ENABLED: // Log.e("", "已近打开"); // // GetNetWorkInfo(); // // break; // // case WifiManager.WIFI_STATE_DISABLED: // Log.e("", "已近关闭"); // break; // } // } /** * 当网络断开或者链接的时候回接收到该广播 */ if (intent.getAction().equals( WifiManager.NETWORK_STATE_CHANGED_ACTION)) { /** * indicating that the state of Wi-Fi connectivity has changed. * One extra provides the new state in the form of a NetworkInfo * object. If the new state is CONNECTED, additional extras may * provide the BSSID and WifiInfo of the access point. as a * String. */ // 如果新的状态是Connected,那么返回的信息回包含额外的一些信息,比如Bssid,Wifiinfo NetworkInfo info = intent .getParcelableExtra(WifiManager.EXTRA_NETWORK_INFO); Log.e("info.isConnected()", info.isConnected() + ""); if (info.isConnected()) { if (info.getType() == ConnectivityManager.TYPE_MOBILE) { Toast.makeText(AppApplication.this, "您正在使用移动网络", 0) .show(); } else if (info.getType() == ConnectivityManager.TYPE_WIFI) { isNetWorkConnected = true; /** * requestRouteToHost 判断一个网络是否可以连接到一个指定的网络 * isActiveNetworkMetered 判断网络是否计费 isNetworkTypeValid * 网络是否有效 */ } } else { isNetWorkConnected = false; } } } } }
相关文章推荐
- 第4周项目4—程序分析(4)
- 第九章 多语言环境的支持和多屏幕的适配(2)
- 动画—CALayer的初步学习二:CALayer绘图—通过代理方法绘图(学会从博客上自学)
- Codeforces 40E Number Table (计数)
- MySql同时更新多条记录的方法
- librtmp 控制流程分析
- Android---颜色值的透明度
- 输出一个整数的每一位,计算1/1-1/2+1/3-1/4+1/5 …… + 1/99 - 1/100 的值,编写程序数一下 1到 100 的所有整数中出现多少次数字 9
- 第九章 多语言环境的支持和多屏幕的适配(1)
- Java 数据库操作
- div布局
- BZOJ1452 [JSOI2009] Count
- VirtualBox 安装增强工具
- What is Cross Linux From Scratch?
- git学习--commit-msg缺失导致的missing Change-Id问题分析
- java多线程问题
- 杭电2524矩形A + B
- 微信支付接口遇到的问题解决
- RabbitMQ监控(3)——核心监控类实现
- 使用grunt实现自动化单元测试