1

以下のコードは、使用されているネットワークがセルかWiFiかを確認するためのものです。WiFi の場合は文字列 WiFi を返し、セルの場合は文字列 Cell を返します。私が持っているコードは次のとおりです。

private String checkNetworkState() {
        ConnectivityManager connManager = (ConnectivityManager) getSystemService(CONNECTIVITY_SERVICE);
        NetworkInfo mWifi = connManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
    //  NetworkInfo mEthernet = connManager.getNetworkInfo(ConnectivityManager.TYPE_ETHERNET);
        NetworkInfo m3G = connManager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);

        if (mWifi!=null) isOnWifi = mWifi.isConnected();
        if (m3G!=null) is3G = m3G.isConnected();

        if(isOnWifi == true) {
            return "WiFi";
        }
        else {
            return "Cell";
        }

    }

WiFiを有効にしてデバッグしました。isOnWifi は true で、is3G は false です。ただし、if と else の両方が呼び出されるのはなぜですか?

私が取得した戻り文字列は実際には「WiFi」であり、セルではありません。これは普通ですか?

4

1 に答える 1

0

ネットワークの状態をチェックしている場合は、方法を変更する必要があります。

private boolean checkNetworkState() {
    ConnectivityManager connManager = (ConnectivityManager)  getSystemService(CONNECTIVITY_SERVICE);
    NetworkInfo mWifi = connManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
    NetworkInfo m3G = connManager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);

    if (mWifi!=null) isOnWifi = mWifi.isConnected();
    if (m3G!=null) is3G = m3G.isConnected();

    if(isOnWifi == true || is3G == true) {
        return true;
    }

    return false;
}

同じメソッドから 2 つの値を取得することはできません。それぞれのケースでそれぞれのメソッドを使用してみてください。

public boolean isConnectedWifi() {
         ConnectivityManager connManager = (ConnectivityManager) getSystemService(CONNECTIVITY_SERVICE);
         NetworkInfo mWifi = connManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI)
         return mWifi.isConnected();
}

public boolean isConnectedMobile() {
        ConnectivityManager connManager = (ConnectivityManager) getSystemService(CONNECTIVITY_SERVICE);
         NetworkInfo m3G = connManager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
         return m3G.isConnected();
}
于 2014-12-12T22:26:44.700 に答える