2016-05-15 28 views
1

私はthisに続き、インターネット接続の可用性をチェックしました。私が直面している問題は、デスクトップ(Wi-Fiホットスポットとして機能する)にインターネット接続がない場合でも、このコードはまだ肯定的です。私は、無線LANの信号が欠落している場合は、結果が否定的でなければならないことを確認したい。 これを達成できますか?Android:インターネット接続を確認する

+0

ルータ/モデムとして動作しているデスクトップがデスクトップに接続されていない場合は、WebサーバーまたはGoogle.comに電話をかけて接続が有効であることを確認できます。 –

+1

あなたは私の答えを試しましたか、それはあなたのために働いたのですか? – Vucko

+0

こんにちはVucko ...あなたの方法は正常に動作します。 – Mandroid

答えて

0

に戻って応答するかどうかを見ることができる、あなたは、インターネット接続が利用可能であるかどうか、わかります方法を持っていますが、あなたは思い接続の品質を記述していないため、これでは不十分であることを示しています。

いくつかのWebサイトをポーリングして、応答を得て、それに基づいてネットワーク要求を続行するかどうかを判断できます。しかし、私の意見では、それは価値がない。

代わりに、あなたのリクエストを送信して、ネットワークエラーを処理するだけで済みます。なぜなら、どうにかする必要がある(サーバーがダウンしている可能性があるためです)。それで、なぜ余分なテストをするのですか?

2

これは私が私のアプリでのインターネット接続がありますかどうかを確認するために使用しています、そしてそれは私のために働いていたコードです:

private boolean isNetworkAvailable() { 
    ConnectivityManager connectivityManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); 
    NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo(); 
    return ((activeNetworkInfo != null) && activeNetworkInfo.isConnected()); 
} 
0

お使いのデバイスは、無線LANに接続されているが、あなたが入力されたデータを取得することはできません。ですから、Google.comや他のサイトにpingを実行し、それがコード200だから、

public class internetchek extends AsyncTask<Void,Void,Void> { 

public boolean connection; 
Context ctx; 
public internetchek(Context context){ 
    this.ctx = context; 
} 

@Override 
protected void onPreExecute() { 
    super.onPreExecute(); 
} 

@Override 
protected Void doInBackground(Void... params) { 

    if(isNetworkAvailable(this.ctx)) 
    { 

    Log.d("NetworkAvailable","TRUE"); 
     if(connectGoogle()) 
     { 

      Log.d("GooglePing","TRUE"); 
      connection=true; 
     } 
     else 
     { 

      Log.d("GooglePing","FALSE"); 
      connection=false; 
     } 
    } 
    else { 

     connection=false; 
    } 


    return null; 
} 

@Override 
protected void onPostExecute(Void aVoid) { 
    super.onPostExecute(aVoid); 
} 

public static boolean isNetworkAvailable(Context context) { 
    ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); 
    NetworkInfo netInfo = cm.getActiveNetworkInfo(); 
    if (netInfo != null && netInfo.isConnected()) { 
     return true; 
    } 
    return false; 
} 

public static boolean connectGoogle() { 
    try { 
     HttpURLConnection urlc = (HttpURLConnection) (new URL("http://www.google.com").openConnection()); 
     urlc.setRequestProperty("User-Agent", "Test"); 
     urlc.setRequestProperty("Connection", "close"); 
     urlc.setConnectTimeout(10000); 
     urlc.connect(); 
     return (urlc.getResponseCode() == 200); 

    } catch (IOException e) { 

     Log.d("GooglePing","IOEXCEPTION"); 
     e.printStackTrace(); 
     return false; 
    } 
}} 
関連する問題