Android 的网络链接状态

Android手机对于系统状态的改变 ,如:信的接收,电话的接收,电池电量过低,网络状态改变都会发一个广播 。有了广播机制,我们只需要创建一个广播接受者来处理这个广播,就可以实现在不同状态下做出不同的操作、

本篇主要记录一下对于网络状态改变的监听。首先定义一个类继承NetworkChangeReceiver,重写onReceive()就行了。然后在OnReceive()这个方法进行相应广播的处理。

public class NetWorkReceiver extends BroadcastReceiver {  public void onReceive(Context context, Intent intent) {
        State wifiState = null;
        State mobileState = null;
        ConnectivityManager cm = (ConnectivityManager) context
                .getSystemService(Context.CONNECTIVITY_SERVICE);
        wifiState = cm.getNetworkInfo(ConnectivityManager.TYPE_WIFI).getState();
        mobileState = cm.getNetworkInfo(ConnectivityManager.TYPE_MOBILE)
                .getState();
        if (mobileState != null && State.CONNECTED == mobileState) {
            // 手机网络连接成功
                   if (cm.getActiveNetworkInfo().getExtraInfo().toLowerCase()
                          .equals("cmnet")) {
                          //cmnet链接
                  }else{
                         // cmwap链接,添加中国移动代理

         HttpHost proxy = new HttpHost("10.0.0.172", 80);

          conn = (HttpURLConnection) url.openConnection(proxy);

                 }
        } else if (State.CONNECTED != wifiState
                && State.CONNECTED != mobileState) {
            // 手机没有任何的网络
        } else if (wifiState != null && State.CONNECTED == wifiState) {
            // 无线网络连接成功
        }

    }

}

然后,我们需要在应用中注册这个广播,注册广播的方式有两种,①在androidmanifest.xml中注册

<receiver
            android:name="com.test.NetworkBroadcast"
            android:label="NetworkConnection" >
            <intent-filter>
                <action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
            </intent-filter>
</receiver>

②在java代码中注册,在Activity的OnCreate()方法中注册,在onDestory()方法中卸载

private BroadcastReceiver networkBroadcast=new BroadcastReceiver();
IntentFilter filter = new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION);
// 设置优先级
filter.setPriority(Integer.MAX_VALUE);
this.registerReceiver(networkBroadcast, filter);

卸载:

if(networkBroadcast != null){
    this.unregisterReceiver(networkBroadcast);
    networkBroadcast=null;
}

③添加权限

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

如果要程序隐藏在后台的话,建议开个service,将BroadcastReceiver注册在service。比如像电话拦截,IP拨号,检测SD卡状态,开机状态等。

时间: 2024-08-25 00:50:36

Android 的网络链接状态的相关文章

检测android的网络链接状态

http://www.oschina.net/question/100267_61129?sort=default&p=1#tags_nav http://www.cnblogs.com/top5/archive/2011/12/29/2306241.html http://www.open-open.com/lib/view/open1342353575260.html http://blog.csdn.net/ithomer/article/details/7896313 检测android

android检测网络连接状态示例讲解

网络的时候,并不是每次都能连接到网络,因此在程序启动中需要对网络的状态进行判断,如果没有网络则提醒用户进行设置 Android连接首先,要判断网络状态,需要有相应的权限,下面为权限代码(AndroidManifest.xml): 复制代码 代码如下: <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/><uses-permission android:name="a

Android 判断网络链接

今天在做判断是否有网络连接时一直报错,后来才知道缺少了权限. 大家都知道Android连网需要添加权限: <uses-permission android:name="android.permission.INTERNET" /> 但是我们在判断时也需要添加访问权限: <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permis

Android判断网络连接状态

需要相关权限 <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/><uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/><uses-permission android:name="android.permission.INTERNET"/

android 检查网络连接状态实现步骤

获取网络信息需要在AndroidManifest.xml文件中加入相应的权限. <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 1)判断是否有网络连接 复制代码 代码如下: public boolean isNetworkConnected(Context context) { if (context != null) { ConnectivityManager mConn

iOS 网络与多线程--1.检测网络链接状态

通过Reachability库,检测设备的网络连接状况. 使用到的类库:Reachability Reachability库,是一个iOS环境下,检测设备网络状态的库,可以在网络上搜索下载. 使用之前导入到工程内. 之后在视图控制器文件(ViewController.m)内添加以下代码 导入网络状态库  #import "Reachability.h" 1 // 用于检测网络是否存在函数 2 -(BOOL)isExistenceNetwork 3 { 4 BOOL isExistenc

Android 检测网络连接状态

Android APP需要连接网络的时候,并不是每次都能连接到网络,因此需要在程序对当前设备的网络状态进行检测,以便及时对用户进行提醒. 判断网络状态,需要有相应的权限,权限代码如下(AndroidManifest.xml): <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> <uses-permission android:name="android.perm

android判断网络连接状态、联网类型、运营商

/** * 获取上网方式 * * @param mContext * @return */ public static String getNetType(Context mContext) { String netType = ""; ConnectivityManager connectionManager = (ConnectivityManager) mContext .getSystemService(Context.CONNECTIVITY_SERVICE); Networ

Android 网络连接状态的监控

有些应用需要连接网络,例如更新后台服务,刷新数据等,最通常的做法是定期联网,直接使用网上资源.缓存数据或执行一个下载任务来更新数据. 但是如果终端设备没有连接网络,或者网速较慢,就没必要执行这些任务.可以使用ConnectivityManager检查是事联网以及当前是何种类型的网络.具体 代码如下: ConnectivityManager cm = (ConnectivityManager) getApplicationContext().getSystemService(Context.CON