码迷,mamicode.com
首页 > 移动开发 > 详细

Android 的网络链接状态

时间:2015-02-13 18:18:58      阅读:221      评论:0      收藏:0      [点我收藏+]

标签:

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卡状态,开机状态等。

Android 的网络链接状态

标签:

原文地址:http://www.cnblogs.com/BoBoMEe/p/4290512.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!