我在应用程序上有一个小服务,在白天收集数据,并将数据保存到SD卡。一个前提是数据量很大,因此app在任何情况下都不应该通过用户的数据计划上传数据。
在某些情况下,wifi“存在”但无法使用,并且电话会尽可能地使用数据计划连接来尽可能地路由网络请求。
有没有办法,无论多么脏,以确保请求只通过wifi连接或其他方式失败?
编辑:
通过阅读我的问题,我发现我没有详细解释发生了什么。我正在从环境中收集数据(某种形式的日志记录),并且数据会累积在SD卡上。当用户在家附近或在家中(或任何其他启用WiFi的地方)时,软件应检测到该内容并通过http POST请求使SD卡内容出列。文件大小为1MB或更大,因此即使我检测到Wifi的存在,它也可能在传输过程中发生变化。或者更糟糕的是,Wifi可以打开,但不可路由,因此电话通过您的数据计划路由连接,并破坏您当月的预算。
答案 0 :(得分: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