3

我在应用程序上有一个小服务,可以在白天收集数据,并将数据保存到 sd 卡。前提是数据量很大,因此应用程序在任何情况下都不应通过用户的数据计划上传该数据。

在某些情况下,wifi“存在”但无法使用,并且电话尽可能地路由网络请求,如果可以的话,使用数据计划连接。

有没有办法,无论多么肮脏,以确保请求将仅通过 wifi 连接或失败?

编辑:

通过阅读我的问题,我发现我没有详细解释发生了什么。我正在从环境中收集数据(某种形式的日志记录),这些数据会累积在 SD 卡上。当用户在附近或在家(或任何其他启用 WiFi 的地方)时,软件应检测到该情况并通过 http POST 请求将 sd 卡内容出列。文件大小为 1MB 或更大,因此即使我检测到 Wifi 的存在,它也会在传输过程中发生变化。或者更糟糕的是,Wifi 可以打开,但无法路由,因此电话会通过您的数据计划路由连接,并破坏您本月的预算。

4

1 回答 1

0

你可以通过两件事来实现这一点:

1-在上传之前,请检查当前手机是否通过 Wi-Fi 连接,这是一个示例函数

 public static boolean isConnectedToWiFi(Context context) {
    NetworkInfo activeNetwork = getConnectivityManager(context)
            .getActiveNetworkInfo();
    if (activeNetwork != null) {
        return activeNetwork.isConnected()
                && activeNetwork.getType() == ConnectivityManager.TYPE_WIFI;
    }
    return false;
}

2- 收听连接变化广播android.net.conn.CONNECTIVITY_CHANGE以监控连接何时发生变化,例如切换到 3G

于 2013-02-10T00:30:56.017 回答