Android判断网络类型以及监控网络状态

一、判断网络类型是wifi,还是3G,还是2G网络

ConnectivityManager connectMgr = (ConnectivityManager) this.getSystemService(Context.CONNECTIVITY_SERVICE);

NetworkInfo info = connectMgr.getActiveNetworkInfo();

一、判断网络是否是wifi,在判断之前一定要进行的非空判断,如果没有任何网络

连接info ==null

info.getType() == ConnectivityManager.TYPE_WIFI

二、判断是否是手机网络

info !=null && info.getType() ==  ConnectivityManager.TYPE_MOBILE

手机网络进行详细区分:

info.getSubtype() 这里使用 getSubtype(),不是 getType(),getType()返回的是0,或者1,是区分是手机网络还是wifi

info.getSubtype()取值列表如下:

* NETWORK_TYPE_CDMA 网络类型为CDMA

* NETWORK_TYPE_EDGE 网络类型为EDGE

* NETWORK_TYPE_EVDO_0 网络类型为EVDO0

* NETWORK_TYPE_EVDO_A 网络类型为EVDOA

* NETWORK_TYPE_GPRS 网络类型为GPRS

* NETWORK_TYPE_HSDPA 网络类型为HSDPA

* NETWORK_TYPE_HSPA 网络类型为HSPA

* NETWORK_TYPE_HSUPA 网络类型为HSUPA

* NETWORK_TYPE_UMTS 网络类型为UMTS

二、监控网络状态

以下代码可以监控网络是否连接,可以根据网络连接来做相应的操作;


 1 import com.qdsj.hxcmjj.activity.MainActivity;
2
3 import android.app.Service;
4 import android.content.BroadcastReceiver;
5 import android.content.Context;
6 import android.content.Intent;
7 import android.content.IntentFilter;
8 import android.net.ConnectivityManager;
9 import android.net.NetworkInfo;
10 import android.os.IBinder;
11
12 public class NetMonitorService extends Service {
13
14
15
16 private ConnectivityManager connectivityManager;
17 private NetworkInfo info;
18
19 private BroadcastReceiver mReceiver = new BroadcastReceiver() {
20
21 @Override
22 public void onReceive(Context context, Intent intent) {
23 String action = intent.getAction();
24 if (action.equals(ConnectivityManager.CONNECTIVITY_ACTION)) {
25 System.out.println("网络状态已经改变");
26 connectivityManager = (ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE);
27 info = connectivityManager.getActiveNetworkInfo();
28 if(info != null && info.isAvailable()) {
29 System.out.println("网络连接");
30 context.startActivity(new Intent(context,MainActivity.class).addFlags(Intent.FLAG_ACTIVITY_NEW_TASK));
31 } else {
32 System.out.println("网络断开");
33 }
34 }
35 }
36 };
37
38
39 @Override
40 public IBinder onBind(Intent intent) {
41 return null;
42 }
43
44 @Override
45 public void onCreate() {
46 super.onCreate();
47 IntentFilter mFilter = new IntentFilter();
48 mFilter.addAction(ConnectivityManager.CONNECTIVITY_ACTION);
49 registerReceiver(mReceiver, mFilter);
50 System.out.println("开启网络监听服务");
51 }
52
53
54
55 @Override
56 public void onDestroy() {
57 super.onDestroy();
58 unregisterReceiver(mReceiver);
59 }
60
61 @Override
62 public int onStartCommand(Intent intent, int flags, int startId) {
63 return super.onStartCommand(intent, flags, startId);
64 }
65
66
67
68
69 }

时间: 2024-10-28 21:21:07

Android判断网络类型以及监控网络状态的相关文章

android判断是否连接wifi和网络状态的判断

<span style="font-size:18px;">// 是否连接WIFI public static boolean isWifiConnected(Context context) { ConnectivityManager connectivityManager = (ConnectivityManager) context .getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo wifiNet

android如何判断当前网络类型(联网,2g,3g,wifi等)

一般对网络的判断都是判断是否联网,不过有时候我们需要知道具体的网络类型,比如在3g网络下,百度地图的定位功能存在很大的偏差,这就需要提前判断网络类型针对3g网络情况做特殊的处理. 关于Android如何检测网络的类型,网上代码很多,但是有用的不多,真正解决了问题的我只找到一篇(见文章末尾网址),为了更好的方便自己理解,对这片文章做了解释和整理. 在android中判断网络需要用到ConnectivityManager,下面的方法演示了如何用ConnectivityManager判断当前是否联网:

判断是否联网_检测网络的类型为3G、2G、wap、wifi

判断是否联网_检测网络的类型为3G.2G.wap.wifi  判断是否联网: /*** * judge Internet is available * * @author wei-spring * @return */ public boolean isHasNet() { ConnectivityManager cwjManager = (ConnectivityManager) mActivity .getSystemService(Context.CONNECTIVITY_SERVICE)

【我的Linux,我做主!】实战--使用netstat监控网络连接信息

目录:(一)netstat简介(二)netstat语法指南(三)实战演练(四)netstat小结 (一)netstat简介(1.1)在Internet的RFC标准中,netstat的定义是:netstat是在内核中访问网络连接状态及相关信息的程序,它能提供TCP连接.在TCP和UDP监听.进程内存管理的相关报告.netstat是控制台命令,是一个监控TCP/IP网络的非常有用的工具,它可以显示路由表.实际的网络连接以及每一个网络接口设备的状态信息.netstat用于显示IP.TCP.UDP和IC

Android中判断网络连接是否可用及监控网络状态

Android中判断网络连接是否可用及监控网络状态 作者: 字体:[增加 减小] 类型:转载 获取网络信息需要在AndroidManifest.xml文件中加入相应的权限,接下来详细介绍Android中判断网络连接是否可用及监控网络状态,感兴趣的朋友可以参考下 获取网络信息需要在AndroidManifest.xml文件中加入相应的权限. <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"

Android 监控网络状态

Html代码 public static boolean isNetworkAvailable(Context context) { ConnectivityManager connectivity = (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE); if (connectivity == null) { Log.i("NetWorkState", "Unavailabe

android——判断网络状态

平常我们玩qq的时候我们没联网 ,qq上面回显示"网络连接不给力,请检查网络连接"那么它是 通过什么方式判断网络是否连接的呢? 下面将写个案例展示如何检查网络连接状态的 由于我们这里只是测试下所以我们的项目只是简单的实现点击一个按钮判断设备网络是否连接如果 网络已连接则弹出一个消息框提示"网络通畅"反之则提示"您的网络真的连接 了吗" 1.新建一个android项目textNet(设备版本为4.4.2) 2.打开activity_main.xml

Android 判断当前网络连接类型

实际应用开发时,如果存在需要用户获取大量数据的情况,最好是先判断下网络类型,提示用户当前的网络类型,是否需要连接Wifi,etc.(手机流量太贵啦,当然土豪是无视这玩意的, (/ □ \)). 定义网络连接类型: public static final int NETTYPE_NULL = 0x00; //未连接网络 public static final int NETTYPE_WIFI = 0x01; //WIFI public static final int NETTYPE_MOBILE

Android - 判断网络状态

Android手机同时支持WIFI和3G, 判断网络连接, 判断网络类型(WIFI或3G). 权限: <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 判断网络连接 /** * 判断网络是否可用, 在使用网络请求是预先使用此方法进行检查, 以节省资源. * * @return 可用状态 */ public static boolean isNetAvailable() { C