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 系统 设置 之 网络 APN (一)
  2. Android scrollview监听滑动状态
  3. checkbox切换选中状态的图片
  4. Android设置Button保持Press的状态
  5. Android 解决多个通知发生冲突的问题
  6. 升级android studio后,打包的apk无法访问网络
  7. Android中判断网络连接是否可用
  8. Android显示和隐藏状态栏和导航栏
  9. android 使用Java自带的HttpURLConnection 连接网络 读取返回数

随机推荐

  1. 软件供应链***(依赖关系混淆***)正在破坏你
  2. iOS开发快捷键总览!
  3. 海量数据处理之bitmap
  4. Spark SQL用UDF实现按列特征重分区
  5. libp2p-rs v0.2.1&0.2.2版本介绍
  6. markdown基础语法使用
  7. 第一天作业
  8. 前端插件:form.js和validate.js的简单入门
  9. php 类成员重载 与命名空间
  10. markdown语法使用