gpt4 book ai didi

android - 同时连接到局域网和互联网?

转载 作者:行者123 更新时间:2023-11-30 01:59:31 25 4
gpt4 key购买 nike

简单地说,我想使用我的 Android 设备连接到 LAN 但又不想失去我的互联网功能。

我仔细研究了 Google 关于网络连接的指南,但我找到的唯一可能的解决方案是 Wi-Fi Direct。不幸的是,我认为这是不可能的,因为 LAN 不支持 Wi-Fi Direct 协议(protocol)。

有没有办法在没有互联网的情况下连接到 Wi-Fi 接入点,并保持与蜂窝网络或以前有互联网的 Wi-Fi 接入点的连接?

如果有帮助,我可以重新配置 LAN

编辑:我看到了this question , 但看起来没有答案,而且是 3 年前问过的

最佳答案

您需要构建一个知道仅使用 WiFi 的 HttpClient。

Android 将检查互联网连接,看它是否可以通过它们连接到互联网,如果不能则忽略它们。即使对于本地 IP 地址,这也很痛苦。

这是我编写的用于创建正确配置的 OkHttp 客户端的 Dagger 模块的一部分。

/**
* Find the WiFi Network object. If the WiFi is off this will return null. You might want to listen to the broadcasts from the WiFi system to retry when the WiFi is turned on.
*/
@Provides
public Network provideNetwork(ConnectivityManager connectivityManager) {
for (final Network network : connectivityManager.getAllNetworks()) {
final NetworkInfo networkInfo = connectivityManager.getNetworkInfo(network);
final int networkType = networkInfo.getType();

if (networkType == ConnectivityManager.TYPE_WIFI) {
return network;
}
}

return null;
}


/**
* Create a HttpClient that will only use the network supplied. Changing this for the built in Apache HttpClient should be easy enough.
*/
@Provides
public OkHttpClient provideOkHttpClient(final Network network) {
if (network != null) {
final OkHttpClient httpClient = new OkHttpClient();
httpClient.setSocketFactory(network.getSocketFactory());

Internal.instance.setNetwork(httpClient, new com.squareup.okhttp.internal.Network() {
@Override
public InetAddress[] resolveInetAddresses(String host) throws UnknownHostException {
return network.getAllByName(host);
}
});

return httpClient;
}

return null;
}

关于android - 同时连接到局域网和互联网?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31713781/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com