У меня есть код ниже, который предназначен для проверки того, используется ли сеть для Cell или WiFi. Если WiFi затем вернет строку WiFi, и если ячейка вернет строку Cell. Код, который у меня есть:Проблема с Android NetworkState, возвращающаяся дважды
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 истинно, а is3G - false. Тем не менее, и то, и другое вызвано, почему это происходит?
Сказав, что возвращаемая строка, которую я получаю, фактически является «WiFi», а не ячейкой. Это обычное дело?
Подождите, «WiFi» и «Ячейка» не могут быть вызваны одновременно, так как один находится в «else». Или я тебя плохо понял? –
Ваш вопрос не имеет смысла - функция не может вернуться дважды, и вы сами говорите, что есть возвращаемое значение Wi-Fi. Вы также говорите, что isWifi истинно, так что ожидается. Так что же именно происходит? –
При вызове метода isOnWifi равно true и is3G равно false. Поэтому, когда будет достигнут блок if/else, я ожидаю, что возврат будет ТОЛЬКО Wi-Fi, однако, если положить конец отладки на оба оператора возврата, оба они кажутся триггерами, что не имеет никакого смысла. Если IF срабатывает, то ELSE будет обходить? Вы правы, однако, я получаю WiFi в качестве возвращаемого значения, несмотря на то, что второе возвращение также появляется –