Android简单实现实时监听网络状态
来源:互联网 发布:淘宝优惠券微信群 编辑:程序博客网 时间:2024/06/13 03:56
先简单说一下思路:网络变化时系统会发出广播。所以我们监听这个广播,利用接口回调通知activity做相应的操作就好了。
思路
判断网络状态(写个工具类NetUtil)
写个类继承BroadcastReceiver(不要忘记在清单文件中注册)
需要在清单文件中添加权限
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>
回调接口(NetEvevt)
BaseActivity实现这个接口
直接上代码
import android.content.Context;import android.net.ConnectivityManager;import android.net.NetworkInfo;/** * Created by Hoban on 2017/11/15. */public class NetUtil { /** * 没有连接网络 */ public static final int NETWORK_NONE = -1; /** * 移动网络 */ public static final int NETWORK_MOBILE = 0; /** * 无线网络 */ public static final int NETWORK_WIFI = 1; public static int getNetWorkState(Context context) { // 得到连接管理器对象 ConnectivityManager connectivityManager = (ConnectivityManager) context .getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo activeNetworkInfo = connectivityManager .getActiveNetworkInfo(); if (activeNetworkInfo != null && activeNetworkInfo.isConnected()) { if (activeNetworkInfo.getType() == (ConnectivityManager.TYPE_WIFI)) { return NETWORK_WIFI; } else if (activeNetworkInfo.getType() == (ConnectivityManager.TYPE_MOBILE)) { return NETWORK_MOBILE; } } else { return NETWORK_NONE; } return NETWORK_NONE; }}
import android.content.BroadcastReceiver;import android.content.Context;import android.content.Intent;import android.net.ConnectivityManager;/** * Created by Hoban on 2017/11/15. */public class NetBroadcastReceiver extends BroadcastReceiver { public NetEvevt evevt = BaseActivity.evevt; @Override public void onReceive(Context context, Intent intent) { if (intent.getAction().equals(ConnectivityManager.CONNECTIVITY_ACTION)) { int netWorkState = NetUtil.getNetWorkState(context); // 接口回调传过去状态的类型 evevt.onNetChange(netWorkState); } } // 自定义接口 public interface NetEvevt { public void onNetChange(int netMobile); }}
import android.os.Bundle;import android.view.View;import android.widget.ListView;import android.widget.TextView;/** * Created by Hoban on 2017/11/15. */public class MainActivity extends BaseActivity { private TextView textView,txtView; ListView listView; //声明一个ListView对象 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); textView= (TextView) findViewById(R.id.textView); txtView=(TextView)this.findViewById(R.id.txtView); //启动时判断网络状态 boolean netConnect = this.isNetConnect(); if (netConnect){ textView.setVisibility(View.GONE); txtView.setText("网络连接正常"); }else { textView.setVisibility(View.VISIBLE); txtView.setText("网络连接异常"); } } @Override public void onNetChange(int netMobile) { super.onNetChange(netMobile); //网络状态变化时的操作 if (netMobile==NetUtil.NETWORK_NONE){ textView.setVisibility(View.VISIBLE); txtView.setText("网络连接异常"); }else { textView.setVisibility(View.GONE); txtView.setText("网络连接正常"); } }}
做了个Demo供大家参考 Demo下载
阅读全文
1 0
- Android简单实现实时监听网络状态
- Android实时监听网络状态
- Android 实时监听网络状态
- Android实时监听网络状态
- Android实时监听网络状态
- Android 实时监听网络状态
- Android实时监听网络状态
- android 实时监听网络连接状态
- Android开发:实时监听网络状态
- Android实时监听网络状态(1)
- Android实时监听网络状态(2)
- Android实时监听网络连接状态
- Android实时监听网络状态 wifi
- Android如何实时监听网络状态.
- android监听网络状态,实时更新网络状态
- ios实时监听网络状态
- RealReachability实时监听网络状态
- 广播实时监听网络状态
- 前端需要了解的 SSO 与 CAS 知识
- python内置函数【A-C】
- 统计学学习笔记——(4)差异性
- 图像分割—基于图的图像分割(Graph-Based Image Segmentation)
- Vagrant和virtualbox安装问题总结
- Android简单实现实时监听网络状态
- 感知器数据分类算法
- ServletContextListener使用详解
- C语言学习1:Windows搭建C语言开发环境,Code::Blocks安装,配置gcc编译器
- Oracle 使用 ass.awk 工具查看 system state dump 说明
- Receiver not registered 报错处理
- 开源评测系统hustoj-代码解读 及 快速安装
- 应聘那点事儿
- MDP