Android实时监听网络状态(1)
其实手机在网络方面的的监听也比较重要,有时候我们必须实时监控这个程序的实时网络状态,android在网络断开与连接的时候都会发出广播,我们通过接收系统的广播就可以实现网络的监听。
1、添加访问网络和获取网络状态的权限
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.INTERNET" />
2、新建一个Application类并继承android.app.Application 申明变量保存网络状态
package com.javen.application; import com.javen.netbroadcast.NetUtil; public class Application extends android.app.Application {
private static Application mApplication;
public static int mNetWorkState; public static synchronized Application getInstance() {
return mApplication;
} @Override
public void onCreate() {
super.onCreate();
mApplication = this;
initData();
} public void initData() {
mNetWorkState = NetUtil.getNetworkState(this);
}
}
Application
3、新建NetBroadcastReceiver类继承BroadcastReceiver 并实现onReceive方法 在onReceive方法通知接口完成加载
package com.javen.receiver; import java.util.ArrayList; import com.javen.application.Application;
import com.javen.netbroadcast.NetUtil; import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent; public class NetBroadcastReceiver extends BroadcastReceiver {
public static ArrayList<netEventHandler> mListeners = new ArrayList<netEventHandler>();
private static String NET_CHANGE_ACTION = "android.net.conn.CONNECTIVITY_CHANGE";
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals(NET_CHANGE_ACTION)) {
Application.mNetWorkState = NetUtil.getNetworkState(context);
if (mListeners.size() > 0)// 通知接口完成加载
for (netEventHandler handler : mListeners) {
handler.onNetChange();
}
}
} public static abstract interface netEventHandler { public abstract void onNetChange();
}
}
4、在应该的Activity中实现netEventHandler接口
package com.javen.netbroadcast; import com.javen.receiver.NetBroadcastReceiver;
import com.javen.receiver.NetBroadcastReceiver.netEventHandler;
import com.javen.ui.base.BaseActivity; import android.os.Bundle;
import android.view.Menu; public class MainActivity extends BaseActivity implements netEventHandler{ @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
NetBroadcastReceiver.mListeners.add(this);
} @Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
} @Override
public void onNetChange() {
// TODO Auto-generated method stub
if (NetUtil.getNetworkState(this) == NetUtil.NETWORN_NONE) {
T.showLong(this, R.string.net_err);
}else {
T.showLong(this, "网络可以使用");
}
} }
5、判断网络的工具类
package com.javen.netbroadcast; import android.content.Context;
import android.net.ConnectivityManager;
import android.net.NetworkInfo.State; public class NetUtil {
public static final int NETWORN_NONE = 0;
public static final int NETWORN_WIFI = 1;
public static final int NETWORN_MOBILE = 2; public static int getNetworkState(Context context) {
ConnectivityManager connManager = (ConnectivityManager) context
.getSystemService(Context.CONNECTIVITY_SERVICE); // Wifi
State state = connManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI)
.getState();
if (state == State.CONNECTED || state == State.CONNECTING) {
return NETWORN_WIFI;
} // 3G
state = connManager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE)
.getState();
if (state == State.CONNECTED || state == State.CONNECTING) {
return NETWORN_MOBILE;
}
return NETWORN_NONE;
}
}
NetUtil
Android实时监听网络状态(1)的更多相关文章
- Android实时监听网络状态
Android实时监听网络状态(1) 其实手机在网络方面的的监听也比较重要,有时候我们必须实时监控这个程序的实时网络状态,android在网络断开与连接的时候都会发出广播,我们通过接收系统的广播就 ...
- Android实时监听网络状态(2)
在开发android应用时,涉及到要进行网络访问,时常需要进行网络状态的检查,以提供给用户必要的提醒.一般可以通过ConnectivityManager来完成该工作. ConnectivityMana ...
- (原创)用Receiver和SystemService监听网络状态,注册Receiver的两种方式
android中网络编程不可避免地要监听网络状态,wifi或者3G以及以太网,并根据当前状态做出相应决策. 在MyReceiver类中的onReceive方法中获得系统服务 ConnectivityM ...
- IOS-网络(监听网络状态)
// // BWNetWorkTool.h // IOS_0131_检测网络状态 // // Created by ma c on 16/1/31. // Copyright © 2016年 博文科技 ...
- IOS-利用AFNetworking监听网络状态
网络环境检测:检测用户当前所处的网络状态 效果图 1.当蜂窝和wifi同时关闭时候 显示为不可达(AFNetworkReachabilityStatusNotReachable)状态 2.打开蜂窝移 ...
- Android 动态监听网络 断网重连
需求: 网络连接断开 弹出popupwindow 当前网络连接断开 网络恢复时popupwindow 消失重新请求网络. 需求描述完毕 上一张帅图 思路:广播 发送及时消息 断网flag popup ...
- Android实践--监測网络状态
Android 监測网络状态 我们在使用Android手机时候,一些APP须要网络环境才干执行,所以手机须要可用的网络,无论是2G.3G或者WIFI.甚至有一些比較耗流量的APP仅仅能在WI ...
- 用BroadcastReceiver监听网络状态的变化
在用户浏览网络信息时,如果网络突然断开,可以及时的提醒用户网络已断开.要实现这个功能,我们可以实现一个广播接收者来接收网络状态改变的广播,当由连接状态变为断开状态时,系统会发送一条广播,广播接收者接收 ...
- js 实时监听滚动条状态 判断滚动条位置
var scrollFunc = function (e) { e = e || window.event; var t = document.documentElement.scrollT ...
随机推荐
- 最近在折腾VPS(持续完善)
买的某国内vps. 本机环境 Win7-x64 使用官方英文版的putty,用于远程登录linux主机.WinSCP图形界面管理文件. VPS CentOS 6.2 安装 安全狗(safedog.cn ...
- 标准C++中的string类的用法总结(转)
http://www.cnblogs.com/xFreedom/archive/2011/05/16/2048037.html 相信使用过MFC编程的朋友对CString这个类的印象应该非常深刻吧?的 ...
- 《STL源码剖析》笔记
STL六大组件 1.容器(container):各种数据结构,如vector,list,deque,set,map等 2.算法(algorithm):各种常用算法如sort,search,copy,e ...
- [jobdu]最小的K个数
一开始马上想起来寻找第k小的数,是采用快排的partition方法.但因为题目要把k之前的数排序输出,这个方法就不是很合适,因为(随机化后:http://blog.csdn.net/liangbopi ...
- USACO3.24Feed Ratios
直接枚举到100水过 /* ID: shangca2 LANG: C++ TASK: ratios */ #include <iostream> #include<cstdio> ...
- VS2012、VS2010、VS2008常用的快捷键
下面为大家带来VS各个版本常用的快捷方式,希望对大家开发过程中有帮助: 强迫智能感知:Ctrl+J: 强迫智能感知显示参数信息:Ctrl-Shift-空格: Ctrl+E,D ----格式化全部代码 ...
- 编译安装nginx并修改版本头信息—参考实例
今天做实验的时候,想起我那台yum安装的nginx+php-fpm+mysql服务器上的nginx版本有点低了,并且还要加两个第3方模块,就去nginx官网下载了最新稳定版nginx-1.0.6,好了 ...
- D 系列性能预期
Kenaz Kwa Azure计算运行时项目经理 我们的全新D系列虚拟机为需要快速的本地(临时)存储或更快 CPU 的应用程序提供了卓越的性能:但是为了获得最佳体验,对系统配置原理稍加了解很有必要 ...
- apache开源项目--kafka
kafka是一种高吞吐量的分布式发布订阅消息系统,她有如下特性: 通过O(1)的磁盘数据结构提供消息的持久化,这种结构对于即使数以TB的消息存储也能够保持长时间的稳定性能. 高吞吐量:即使是非常普通的 ...
- sql - and - or
sql - and SQL AND links together two or more conditional statements for increased filtering when run ...