java - 通过 WiFi 下载数据时,我如何知道我已使用 Wifi 连接

标签 java android wifi httpurlconnection connectivity

使用ConnectivityManager,我可以检查用户是否连接到WiFi。如果是,我的应用程序开始下载。将数据写入本地存储后,我再次检查用户是否连接到 WiFi。如果没有,我就停止下载。

现在,我想知道的是..如何确保 HttpURLConnection 是通过 WiFi 进行的?

另一个特点是用户可以自由选择下载。用户允许应用程序通过 WiFi 或网络下载。

假设用户打开了 WiFi 的场景。该应用程序会检查 WiFi 是否可用并开始下载。随后,用户关闭 WiFi 或移出信号范围。 然后连接会发生什么情况?是否切换到使用网络?

此外,如何确保 HttpURLConnection 是通过网络进行的?

总而言之,我只需要避免用户最终因下载意外花费大量金钱的糟糕情况。这不是一个非常关键的应用程序,我这样做只是为了练习

最佳答案

ConnectivityManager connManager = (ConnectivityManager) getSystemService(CONNECTIVITY_SERVICE);
NetworkInfo info = connManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI);

更多信息可以从NetworkInfo中提取。只需检查this reference .

您需要此权限:

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

补充:我不确定这是Android默认设置还是设备配置,但​​只要建立了wifi连接,3G就会自动禁用。我在一些设备上进行了测试,所有设备都有这种行为。

关于java - 通过 WiFi 下载数据时,我如何知道我已使用 Wifi 连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18276649/

相关文章:

Android如何获取路由器名称?

java - 创建数组并计算大写字母的数量并通过复制到第二个数组来删除指定的字符

java - 我如何处理 IOExceptions?

android - 访问 API 的 Swift 库

c++ - 为什么将套接字绑定(bind)到接口(interface)失败?

iphone - 是否可以使用 Cocoa 创建本地 WiFi 网络,同时保持与现有的支持 Internet 的 WiFi 连接的连接?

java - 计算不含节假日的两天之间的工作日差?

java - mathfield 作为 Enum java

java - 我无法让 ListView 显示文件夹中的文件名

java - 在缓存中存储 ListView 图像