2011-02-17 77 views
1

我想檢查gprs連接是否活動或不在android通過代碼顯示 我該如何檢查。 我有以下代碼。 它會工作嗎?檢查GPRS連接

public static boolean isOnline(Context context) { 
try { 
ConnectivityManager cm = (ConnectivityManager) context 
.getSystemService(Context.CONNECTIVITY_SERVICE); 
if (cm.getActiveNetworkInfo().isConnectedOrConnecting()) { 
URL url = new URL("https://telemeter4tools.services.telenet.be/TelemeterService"); 
HttpURLConnection urlc = (HttpURLConnection) url 
.openConnection(); 
urlc.setRequestProperty("User-Agent", "My Android Demo"); 
urlc.setRequestProperty("Connection", "close"); 
urlc.setConnectTimeout(1000); // mTimeout is in seconds 

urlc.connect(); 

if (urlc.getResponseCode() == 200) { 
return true; 
} else { 
return false; 
} 
} 
} catch (IOException e) { 
// TODO Auto-generated catch block 
e.printStackTrace(); 
} 
return false; 
} 

我可以使用google 替換該網站並檢查響應。

回答

1

我可以使用google替換該網站並檢查響應。

,並與http,無需命中頁面並得到響應更換https

只是要HEAD

HEAD方法是相同,除了在應答服務器不能返回一個消息體得到的。 HTTP頭中包含的對HEAD請求作出響應的元信息應該與爲響應GET請求而發送的信息相同。此方法可用於獲取有關請求隱含的實體的元信息,而無需傳遞實體主體本身。此方法通常用於測試超文本鏈接的有效性,可訪問性和最近的修改。

對HEAD請求的響應可能是可緩存的,因爲響應中包含的信息可能用於從該資源更新先前緩存的實體。如果新字段值指示緩存實體與當前實體不同(如將通過Content-Length,Content-MD5,ETag或Last-Modified中的更改所指示的那樣),則緩存必須將緩存條目視爲陳舊。

public static boolean isGPRSWorking(String URL){ 
    try { 
     HttpURLConnection.setFollowRedirects(false); 

     HttpURLConnection con = 
     (HttpURLConnection) new URL(URLName).openConnection(); 
     con.setRequestMethod("HEAD"); 
     return (con.getResponseCode() == HttpURLConnection.HTTP_OK); 
    } 
    catch (Exception e) { 
     e.printStackTrace(); 
     return false; 
    } 
    } 
0

使用這種簡單的方法來檢查連接

public boolean isOnline() 
{ 

    ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); 
    NetworkInfo ni = cm.getActiveNetworkInfo(); 
    boolean result = false; 
    if(ni != null) 
    { 
     if( ni.getState() == NetworkInfo.State.CONNECTED) 
     { 
      result = true; 
     } 
    } 

    return result; 


} 

利用這個我們可以檢查連接到設備的任何網絡。您可以通過指定additionaly

ConnectivityManager connec = (ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE); 
    // ARE WE CONNECTED TO THE NET 
if (connec.getNetworkInfo(0).getState() == NetworkInfo.State.CONNECTED || 
    connec.getNetworkInfo(1).getState() == NetworkInfo.State.CONNECTED) 

其中0和1分別指的是移動和無線連接

0

如果你的,如果你可以看到一個移動連接測試專門檢查Wi-Fi或GPRS;

NetworkInfo.getType() == ConnectivityManager.TYPE_MOBILE

的對象

從cm.getActiveNetworkInfo()在你的代碼返回。如果連接是移動連接,這將返回true。

對GPRS的測試並沒有什麼意義,因爲並非所有的移動設備都支持GPRS協議,並且很多可以使用其他蜂窩協議(CDMA,HSDPA等)。

3
Check below code: 

public boolean checkNetworkStatus() { 

    final ConnectivityManager connMgr = (ConnectivityManager) this 
      .getSystemService(Context.CONNECTIVITY_SERVICE); 

    final android.net.NetworkInfo wifi = connMgr 
      .getNetworkInfo(ConnectivityManager.TYPE_WIFI); 

    final android.net.NetworkInfo mobile = connMgr 
      .getNetworkInfo(ConnectivityManager.TYPE_MOBILE); 

    if (wifi.isAvailable()) { 
     Toast.makeText(this, "Wifi connection.", Toast.LENGTH_LONG).show(); 
     return true; 

    } else if (mobile.isAvailable()) { 
     Toast.makeText(this, "GPRS connection.", Toast.LENGTH_LONG).show(); 
     return true; 

    } else { 
     Toast.makeText(this, "No network connection.", Toast.LENGTH_LONG).show(); 
     return false; 
    }  

}