2011-09-13 4 views
1

wifi(利用可能な場合)、 、またはgprs(Wi-Fiが利用できない場合)のいずれかを使用して、アプリをサーバーに接続する必要があります。ここ は、接続の可用性ネットワークの可用性を確認するには?

public static final boolean isConnectionAvailable(Activity a) 
{ 

    ConnectivityManager cm = (ConnectivityManager)a.getSystemService(Context.CONNECTIVITY_SERVICE); 

    State mobile = cm.getNetworkInfo(0).getState(); 

    State wifi = cm.getNetworkInfo(1).getState(); 

    if (wifi == NetworkInfo.State.CONNECTED || wifi == NetworkInfo.State.CONNECTING) 
    { 
     return true; 
    } 
    if (mobile == NetworkInfo.State.CONNECTED || mobile == NetworkInfo.State.CONNECTING) 
    { 
     return true; 
    } 

    return false; 
}  

をチェックするために私のコードは、これは正しい方法はありますか?誰かが私に良い方法を提案することはできますか?

+1

それは動作しませんか? – Cristian

+0

これはhttp://stackoverflow.com/questions/1560788/how-to-check-internet-access-on-android-inetaddress-never-timeoutsにも記載されています。 – tomwhipple

答えて

9

次のような非常に似たアプローチが働いていますが、基本的なメディアを気にしないという利点があります.WiPだけではないように見えるためです。多分これらはモバイルでもカバーされているかもしれませんが、ドキュメントはきれいではありません:

// added as an instance method to an Activity 
boolean isNetworkConnectionAvailable() { 
    ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); 
    NetworkInfo info = cm.getActiveNetworkInfo();  
    if (info == null) return false; 
    State network = info.getState(); 
    return (network == NetworkInfo.State.CONNECTED || network == NetworkInfo.State.CONNECTING); 
}  
関連する問題