gpt4 book ai didi

android - 检查真实的互联网连接

转载 作者:太空宇宙 更新时间:2023-11-03 13:01:14 25 4
gpt4 key购买 nike

在我的应用程序中,我需要检查设备是否已连接到 Internet。我尝试使用 ConnectivityManager,但它没有给出 100% 精确的结果。例如,我可能有 Wi-Fi 连接,但仍然无法访问互联网资源。在我的例子中,我必须打开一个 VPN 连接,在我通过 wi-fi 连接后,才能真正访问互联网。所以使用 ConnectivityManager 的方法不起作用。

那么,关于上述情况 - 我应该编写一个手动 http 请求以确保还是有其他方法?

这是我正在使用的一些代码

ConnectivityManager cm =  (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
return cm.getActiveNetworkInfo() != null && cm.getActiveNetworkInfo().isConnected() && cm.getActiveNetworkInfo().isAvailable();

最佳答案

是的,您是对的,要检查您是否可以访问互联网,您需要明确地进行测试。如果您需要 HTTP 访问,您可以尝试连接到您稍后想要连接的主机。

不过,您应该使用稍后打算使用的连接方法。 HTTP 可以工作,但 FTP 不行。因此,如果您需要 FTP 访问权限,您应该对其进行测试。


如果你还想获取外网IP可以用这个方法:

public static InetAddress getExternalIp() throws IOException {
URL url = new URL("http://automation.whatismyip.com/n09230945.asp");
URLConnection connection = url.openConnection();
connection.addRequestProperty("Protocol", "Http/1.1");
connection.addRequestProperty("Connection", "keep-alive");
connection.addRequestProperty("Keep-Alive", "1000");
connection.addRequestProperty("User-Agent", "Web-Agent");

Scanner s = new Scanner(connection.getInputStream());
try {
return InetAddress.getByName(s.nextLine());
} finally {
s.close();
}
}

如果您通过此方法成功获得 IP 地址,则可以通过 HTTP 连接到该地址。

关于android - 检查真实的互联网连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11096987/

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