2

Wi-Fi(利用可能な場合)または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;
}      

これは正しい方法ですか?誰かが私にもっと良い方法を提案できますか?

4

3 に答える 3

9

次の非常によく似たアプローチが機能しますが、WiFi以外のサポートがあるように見えるため、基盤となるメディアを気にしないという追加の利点があります。たぶんこれらもモバイルでカバーされていますが、ドキュメントはあまり明確ではありません:

// 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);
}     
于 2012-01-18T06:49:46.573 に答える
1

ネットワーク可用性チェック:

private boolean isNetworkAvailable() {
    ConnectivityManager connectivityManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
    NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo();
    return activeNetworkInfo != null && activeNetworkInfo.isConnected();
}
于 2018-05-08T05:32:36.650 に答える
0

または、kotlinの実装を使用することもできます

fun Context.isNetworkAvailable(): Boolean {
val cm = getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager
val activeNetwork: NetworkInfo? = cm.activeNetworkInfo
return activeNetwork?.isConnectedOrConnecting == true

}

于 2021-03-03T09:10:17.690 に答える