Есть ли способ проверить, подключен ли Ethernet специально (даже если WIFI также подключен)?

С помощью диспетчера соединений достаточно просто увидеть, есть ли соединение, однако, если одновременно подключены и Ethernet, и WIFI, всегда отображается сообщение о подключении WIFI.

Я хочу знать, есть ли у меня связь, но также и то, что конкретно связано. Например, только Ethernet? Ethernet и WIFI? Только WIFI? Ничего такого?

Возможно ли это в Android?

У меня есть приложение, которое должно отдавать предпочтение Ethernet (в этот момент необходимо отключить WIFI), но использовать WIFI, если Ethernet не доступен (в качестве резервной копии).

Я могу заставить его работать с событиями изменения сети, но не когда оба подключены при запуске приложения - в этом случае он не знает, чтобы отключить WIFI.

Изменить: не совсем решение вопроса, но я обошел его, по сути, отключив WIFI для проверки Ethernet, а затем снова включив его (если он был включен ранее). Не идеально, но это единственный вариант, насколько я знаю.

1 ответ

Проверь это

void chkStatus() {
    final ConnectivityManager connMgr = (ConnectivityManager)
    this.getSystemService(Context.CONNECTIVITY_SERVICE);
    final android.net.NetworkInfo wifi = connMgr.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
    final android.net.NetworkInfo mobile = connMgr.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
    if (wifi.isConnectedOrConnecting ()) {
        Toast.makeText(this, "Wifi", Toast.LENGTH_LONG).show();
    } else if (mobile.isConnectedOrConnecting ()) {
        Toast.makeText(this, "Mobile 3G ", Toast.LENGTH_LONG).show();
    } else {
        Toast.makeText(this, "No Network ", Toast.LENGTH_LONG).show();
    }
}
Другие вопросы по тегам