1

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 に置き換えて、応答を確認できますか。

4

5 に答える 5

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;
    }       

}
于 2011-10-12T18:51:23.810 に答える
1

そのサイトを Google に置き換えて、応答を確認できますか。

はい、置き換えhttpshttp、ページをヒットして応答を得る必要もありません。

頭を作るだけ

HEAD メソッドは、サーバーが応答でメッセージ本文を返してはならないことを除いて、GET と同じです。HEAD リクエストに応答して HTTP ヘッダーに含まれるメタ情報は、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;
    }
  }  
于 2011-02-17T10:49:11.640 に答える
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;


} 

これを使用して、デバイスに接続されているネットワークを確認できます。さらに指定することで、WIFIまたはGPRSのいずれかを具体的に確認できます

 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 はそれぞれモバイル接続と Wi-Fi 接続を表します

于 2011-02-17T10:56:18.200 に答える
0

モバイル接続をテストしている場合は、次のことを確認できます。

NetworkInfo.getType() == ConnectivityManager.TYPE_MOBILE

コード内の cm.getActiveNetworkInfo() から返されたオブジェクト。接続がモバイルの場合、これは true を返します。

すべてのモバイル デバイスが GPRS プロトコルをサポートしているわけではなく、多くは他のセルラー プロトコル (CDMA、HSDPA など) を使用できるため、特に GPRS のテストは意味がありません。

于 2011-02-17T10:58:29.090 に答える