android判斷手機是否聯網

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

發佈了15 篇原創文章 · 獲贊 1 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章