如果擬開發一個網絡應用的程序,首先考慮是否接入網絡,在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>