1 网络连接类型 ConnectivityManager


监听网络变化broadcat <action android:name="android.net.conn.CONNECTIVITY_CHANGE" />

ConnectivityManager connec = (ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo info = connec.getActiveNetworkInfo();
//倘若手机目前不在网络的服务范围,则connec.getActiveNetworkInfo()会返回null
//NetworkInfo []allinfo= connec.getAllNetworkInfo();
/*5种联网类型*/
String typeName = info.getTypeName(); //cmwap/cmnet/wifi/uniwap/uninet
info.getTypeName(); // 以何种方式连线 [WIFI]
info.getState(); // 连线状态 [CONNECTED]
info.isAvailable(); // 网络是否可用 [true]
info.isConnected(); // 网络是否已经连接 [true]
info.isConnectedOrConnecting(); // 网络是否已经连接或者连接中 [true]
info.isFailover(); // 网络是否有问题 [false]
info.isRoaming(); // 网络是否在漫游中 [false]
需要加的权限:
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>
2 PhoneStateListener
很多应用PhoneStateListener都是监听来电去电,PhoneStateListener还可以监听网络断开、正在连接和连接成功。
final TelephonyManager mTelephonyMgr = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
mTelephonyMgr.listen(new PhoneStateListener(){

@Override
public void onDataConnectionStateChanged(int state) {
switch(state){
case TelephonyManager.DATA_DISCONNECTED://网络断开
break;
case TelephonyManager.DATA_CONNECTING://网络正在连接
break;
case TelephonyManager.DATA_CONNECTED://网络连接上
break;
}
}

}, PhoneStateListener.LISTEN_DATA_CONNECTION_STATE);


/**
* 测试ConnectivityManager
* ConnectivityManager主要管理和网络连接相关的操作
* 相关的TelephonyManager则管理和手机、运营商等的相关信息;WifiManager则管理和wifi相关的信息。
* 想访问网络状态,首先得添加权限<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
* NetworkInfo类包含了对wifi和mobile两种网络模式连接的详细描述,通过其getState()方法获取的State对象则代表着
* 连接成功与否等状态。
*
*/
public void testConnectivityManager() {
ConnectivityManager connManager = (ConnectivityManager) this
.getSystemService(CONNECTIVITY_SERVICE);
// 获取代表联网状态的NetWorkInfo对象
NetworkInfo networkInfo = connManager.getActiveNetworkInfo();
// 获取当前的网络连接是否可用
boolean available = networkInfo.isAvailable();
if(available){
Log.i("通知", "当前的网络连接可用");
}
else{
Log.i("通知", "当前的网络连接可用");
}

State state = connManager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE).getState();
if(State.CONNECTED==state){
Log.i("通知", "GPRS网络已连接");
}

state = connManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI).getState();
if(State.CONNECTED==state){
Log.i("通知", "WIFI网络已连接");
}

// 跳转到无线网络设置界面
startActivity(new Intent(android.provider.Settings.ACTION_WIRELESS_SETTINGS));
// 跳转到无限wifi网络设置界面
startActivity(new Intent(android.provider.Settings.ACTION_WIFI_SETTINGS));

}
/**
* 测试ConnectivityManager
* ConnectivityManager主要管理和网络连接相关的操作
* 相关的TelephonyManager则管理和手机、运营商等的相关信息;WifiManager则管理和wifi相关的信息。
* 想访问网络状态,首先得添加权限<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
* NetworkInfo类包含了对wifi和mobile两种网络模式连接的详细描述,通过其getState()方法获取的State对象则代表着
* 连接成功与否等状态。
*
*/
public void testConnectivityManager() {
ConnectivityManager connManager = (ConnectivityManager) this
.getSystemService(CONNECTIVITY_SERVICE);
// 获取代表联网状态的NetWorkInfo对象
NetworkInfo networkInfo = connManager.getActiveNetworkInfo();
// 获取当前的网络连接是否可用
boolean available = networkInfo.isAvailable();
if(available){
Log.i("通知", "当前的网络连接可用");
}
else{
Log.i("通知", "当前的网络连接可用");
}

State state = connManager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE).getState();
if(State.CONNECTED==state){
Log.i("通知", "GPRS网络已连接");
}

state = connManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI).getState();
if(State.CONNECTED==state){
Log.i("通知", "WIFI网络已连接");
}

// 跳转到无线网络设置界面
startActivity(new Intent(android.provider.Settings.ACTION_WIRELESS_SETTINGS));
// 跳转到无限wifi网络设置界面
startActivity(new Intent(android.provider.Settings.ACTION_WIFI_SETTINGS));

}


(注意:上面的代码只是示例,直接运行的话有待修改。)

上面判断网络类型的方法只是为了展示用法,其实完全可以通过networkInfo.getType()的返回值来判断。

如:

view plaincopy to clipboardprint?
Context context = listActivity.getApplicationContext();//获取应用上下文
ConnectivityManager connectivityManager = (ConnectivityManager) context
.getSystemService(Context.CONNECTIVITY_SERVICE);//获取系统的连接服务
NetworkInfo activeNetInfo = connectivityManager.getActiveNetworkInfo();//获取网络的连接情况
if(activeNetInfo.getType()==ConnectivityManager.TYPE_WIFI){
//判断WIFI网
}else if(activeNetInfo.getType()==ConnectivityManager.TYPE_MOBILE) {
//判断3G网
}

更多相关文章

  1. android 从Activity 获取 rootView 根节点
  2. Android(安卓)SurfaceView 实现实时显示摄像头视频
  3. Android(安卓)ScrollView里嵌套ListView
  4. android修改当前窗口的亮度
  5. 【Android】判断某个AP是否在系统中存在(PackageManager与Package
  6. android百度地图半径画圆
  7. 百度地图中android获取经纬度和地方名称
  8. Failed to create directory C:\ Program Files\Android\andr
  9. Android中判断网络连接是否可用

随机推荐

  1. 车载多媒体Android开发平台学习心得
  2. Android记录12--控制屏幕常亮不锁屏
  3. android视频录制、另一部手机实时观看方
  4. android部分控件属性摘抄
  5. Intent传递对象的两种方法(Serializable,
  6. 记录Android中使用ViewDragHelper实现拖
  7. weex和Android的交互
  8. Android ViewPager 高度自适应
  9. android Material Design UI
  10. Android IntentService详解