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);