如果拟开发一个网络应用的程序,首先考虑是否接入网络,在Android手机中判断是否联网可以通过 ConnectivityManager 类的isAvailable()方法判断,首先获取网络通讯类的实例
ConnectivityManager cwjManager=(ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE); ,
使用cwjManager.getActiveNetworkInfo().isAvailable(); 来返回是否有效,
如果为True则表示当前Android手机已经联网,可能是WiFi或GPRS、HSDPA等等,具体的可以通过ConnectivityManager 类的getActiveNetworkInfo() 方法判断详细的接入方式,需要注意的是有关调用需要加入
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission> 这个权限,
android开发网提醒大家在真机上Market和Browser程序都使用了这个方法,来判断是否继续,同时在一些网络超时的时候也可以检查下网络连接是否存在,以免浪费手机上的电力资源。
代码部分:
package cn.com.jdsc;
import java.net.InetAddress;
import java.net.NetworkInterface;
import java.util.Enumeration;
import cn.com.jdsc.BuyActivity.btnRegisterClick;
import android.app.Activity;
import android.content.Context;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.os.Bundle;
import android.text.TextUtils;
import android.util.Log;
import android.widget.TextView;
public class LinkState extends Activity {
boolean state;
TextView stateTextView;
private int nType;
int netType = -1;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.link);
stateTextView = (TextView) findViewById(R.id.link_textview);
getState();
}
private void getState() {
// TODO Auto-generated method stub
ConnectivityManager cwjManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo networkInfo = cwjManager.getActiveNetworkInfo();
// state = cwjManager.getActiveNetworkInfo().isAvailable();
// if (state == true) {
// stateTextView.setText("网咯状态已链接");
// }
// else{
// stateTextView.setText("网咯状态没有链接");
// }
// }
// statesss = networkInfo.getType();
//
// if (statesss == 1) {
// stateTextView.setText("wap网咯");
// } else {
//
// }
// -1:没有网络 1:WIFI网络2:wap网络3:net网络
if (networkInfo == null) {
stateTextView.setText("没有网络");
}
nType = networkInfo.getType();
if (nType == ConnectivityManager.TYPE_MOBILE) {
Log.e("networkInfo.getExtraInfo()",
"networkInfo.getExtraInfo() is "
+ networkInfo.getExtraInfo());
if (networkInfo.getExtraInfo().toLowerCase().equals("cmnet")) {
netType = 3;
stateTextView.setText("net网络");
}
else {
netType = 2;
stateTextView.setText("wap网络");
}
}
else if (nType == ConnectivityManager.TYPE_WIFI) {
netType = 1;
stateTextView.setText("WIFI网络");
// * NETWORK_TYPE_CDMA 网络类型为CDMA
// * NETWORK_TYPE_EDGE 网络类型为EDGE
// * NETWORK_TYPE_EVDO_0 网络类型为EVDO0
// * NETWORK_TYPE_EVDO_A 网络类型为EVDOA
// * NETWORK_TYPE_GPRS 网络类型为GPRS
// * NETWORK_TYPE_HSDPA 网络类型为HSDPA
// * NETWORK_TYPE_HSPA 网络类型为HSPA
// * NETWORK_TYPE_HSUPA 网络类型为HSUPA
// * NETWORK_TYPE_UMTS 网络类型为UMTS
}
}
// private String getPhoneIp() {
// try {
// for (Enumeration<NetworkInterface> en = NetworkInterface.getNetworkInterfaces(); en.hasMoreElements();) {
// NetworkInterface intf = en.nextElement();
// for (Enumeration<InetAddress> enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements();) {
// InetAddress inetAddress = enumIpAddr.nextElement();
// if (!inetAddress.isLoopbackAddress() && inetAddress instanceof Inet4Address) {
// //if (!inetAddress.isLoopbackAddress() && inetAddress instanceof Inet6Address) {
// return inetAddress.getHostAddress().toString();
// }
// }
// }
// } catch (Exception e) {
// }
// return "";
// }
}
布局文件:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<TextView
android:id="@+id/link_textview"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="TextView"
android:textColor="#345671"
android:textSize="20sp"/>
</LinearLayout>