Android заставляет приложение использовать мобильный канал передачи данных

Я занимаюсь расследованием приложения, которое разрабатываю. Проблема заключается в том, что приложению требуется подключение к мобильной сети передачи данных, поэтому при включенном Wi-Fi оно не будет правильно маршрутизироваться, поскольку серверы находятся в сети оператора связи по сравнению с общедоступной сетью. Может ли одно приложение предназначаться для мобильных данных, в то время как другие используют Wi-Fi или это что-то нестандартное?

1 ответ

Вы не можете явно принудительно установить канал связи для каждого приложения (вы можете запросить использование предпочтительного режима через ConnectivityManager.setNetworkPreference(...), но это не "принуждение").

Хотя это, вероятно, ужасный UX, вы можете сообщить пользователю, что ваше приложение запрещает использовать WiFi, а затем отключить его, если они хотят продолжить. Для этого вам нужно ACCESS_WIFI_STATE а также CHANGE_WIFI_STATE разрешения. Код будет выглядеть примерно так:

manager = (WifiManager)this.getSystemService(Context.WIFI_SERVICE);

if(manager.isWifiEnabled()) {
    manager.setWifiEnabled(false);
}
// and to be sure:
ConnectivityManager.setNetworkPreference(ConnectivityManager.TYPE_MOBILE);
Другие вопросы по тегам