0

インターネット接続が利用可能かどうかを確認する必要があるアプリを開発しています。私が書いたコードはすべてのケースを処理しているようですが、私のエミュレーターでは機能しません。私のコード:

public boolean hasConnection() {
        ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);

        NetworkInfo wifiNetwork = cm
                .getNetworkInfo(ConnectivityManager.TYPE_WIFI);
        if (wifiNetwork != null && wifiNetwork.isConnected()) {
            return true;
        }

        NetworkInfo mobileNetwork = cm
                .getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
        if (mobileNetwork != null && mobileNetwork.isConnected()) {
            return true;
        }

        NetworkInfo activeNetwork = cm.getActiveNetworkInfo();
        if (activeNetwork != null && activeNetwork.isConnected()) {
            return true;
        }
        return false;
    }

false問題は、デバイスとエミュレーターの両方で、インターネット接続が利用可能かどうかが返されないことです。ただし、デバイスがwifi接続で接続されている場合はうまく機能しています. そのスニペットにはどのような問題がありますか?

4

1 に答える 1

-1

この方法を試してください。

private boolean IsNetworkAvailable() {
    ConnectivityManager mConnectivityManager 
          = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
    NetworkInfo mActiveNetworkInfo = mConnectivityManager.getActiveNetworkInfo();
    return mActiveNetworkInfo != null && mActiveNetworkInfo.isConnected();
}

また、次のものが必要です。

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
于 2013-08-17T04:52:37.403 に答える