您的位置:首页 > 理论基础 > 计算机网络

网络连接类型判断

2012-11-13 10:21 381 查看
转自:http://blog.sina.com.cn/s/blog_61f4999d0100r8ud.html

1.网络连接类型判断

NetworkInfo activeNetInfo = connectivityManager.getActiveNetworkInfo();

activeNetInfo.getType()==ConnectivityManager.TYPE_WIFI/TYPE_MOBILE

或者

ConnectivityManager connec = (ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE);

if (connec.getNetworkInfo(1).getState() == NetworkInfo.State.CONNECTED)

text.setText("wifi方式连接");

if (connec.getNetworkInfo(0).getState() == NetworkInfo.State.CONNECTED)

text.setText("GPRS方式连接");

如果拟开发一个网络应用的程序,首先考虑是否接入网络,在Android手机中判断是否联网可以通过 ConnectivityManager 类的isAvailable()方法判断,首先获取网络通讯类的实例
ConnectivityManager cwjManager=(ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE); ,使用cwjManager.getActiveNetworkInfo().isAvailable(); 来返回是否有效,如果为True则表示当前Android手机已经联网,可能是WiFi或GPRS、HSDPA等等,具体的可以通过 ConnectivityManager 类的getActiveNetworkInfo()
方法判断详细的接入方式,需要注意的是有关调用需要加入 这个权限,android开发网提醒大家在真机上Market和Browser程序都使用了这个方法,来判断是否继续,同时在一些网络超时的时候也可以检查下网络连接是否存在,以免浪费手机上的电力资源。

android 中查看当前是否联网

方法如下:

ConnectivityManager cManager=(ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE);

NetworkInfo info = cwjManager.getActiveNetworkInfo();

if (info != null && info.isAvailable()){

//do something

//能联网

return true;

}else{

//do something

//不能联网

return false;

}

如果为True则表示当前Android手机已经联网,可能是WiFi或GPRS、HSDPA等等,具体的可以通过 ConnectivityManager 类的getActiveNetworkInfo() 方法判断详细的接入方式。

同时要在manifest里面加个权限

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

2、
其中选择接入点的函数可以参考

public int startUsingNetworkFeature (int networkType, String feature)。

3.GPRS网络连接类型(cmwap/cmnet)程序判断

本来想通过contenprovider将APN设置的数据库当前选择读出来,但似乎在我的HTC G2上无法运行。后来想直接通过读取网络连接信息来得到相关连接类型,涉及类包括:ConnectivityManager以及NetworkInfo。主要在getExtraInfo()得到类型结果。不多说,贴代码如下:

ConnectivityManager connectivityManager = (ConnectivityManager)getSystemService( Context.CONNECTIVITY_SERVICE );

NetworkInfo activeNetInfo = connectivityManager.getActiveNetworkInfo();

NetworkInfo mobNetInfo = connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE );

if( mobNetInfo != null )

{

Toast.makeText( this, "Mobile Network Type : " + mobNetInfo.getExtraInfo(), Toast.LENGTH_SHORT ).show();

}

}

注:

判断网络类型可以直接通过networkInfo.getType()的返回值来判断。

如:

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网

}

可能会用到:

// 跳转到无线网络设置界面

startActivity(new Intent(android.provider.Settings.ACTION_WIRELESS_SETTINGS));

// 跳转到无限wifi网络设置界面

startActivity(new Intent(android.provider.Settings.ACTION_WIFI_SETTINGS));
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: