【发布时间】:2019-05-09 19:51:38
【问题描述】:
我有一个在 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() 是屏幕日志,因此在未连接到调试器时更容易查看发生的情况。
有什么想法吗?
【问题讨论】:
-
请参考这个链接stackoverflow.com/questions/35152417/…我有同样的问题
标签: java android sockets android-wifi android-9.0-pie