У меня развернуто приложение, которое не работает на Android 9. Часть его функции - настроить модуль в сети точки доступа, чтобы этот модуль мог подключаться к домашней сети пользователя.
У меня есть код, который обнаруживает и подключается к правильной сети WIFI, но когда я пытаюсь открыть сокет для устройства, он не работает - только на Android 9 и только если мобильные данные включены. Если я вручную отключаю мобильные данные на устройстве, все работает нормально.
Socket open() {
Socket sock = new Socket(Proxy.NO_PROXY);
try {
sock.bind(new InetSocketAddress(localIpAddress(), 50000));
} catch (IOException e) {
activity.logContent("Warning: Failed to bind socket : " + e.toString());
}
try {
sock.connect(new InetSocketAddress("192.168.17.1", 5555), (int)5000);
} catch (IOException e) {
// This catch fires when Mobile Data is on.
activity.logContent("Connected to " + activity.mWifiManager.getConnectionInfo().getSSID());
activity.logContent("Couldn't open socket : " + e.toString());
}
return sock;
}
Я пробовал это с и без Proxy.NO_PROXY
и с и без вызова bind()
. Если вызов связывания отсутствует, ошибка означает, что сокет пытается подключиться через сотовую сеть. (Примечание: activity.logContent()
- это экранный журнал, поэтому легче видеть, что происходит, если он не подключен к отладчику).
Есть идеи, что не так?