我正在开发一个应用程序,其中我正在拍摄一些照片以及一些信息,然后将整个上传到服务器。我正在上传文件以响应按钮点击,但它只在互联网工作正常时才会发生。因此,如果互联网不起作用,我希望安排日期上传任务,以便稍后在设备连接到互联网时自动将其上传到服务器。
我已经通过JobScheduler API,但问题是它不支持低于5.0的Android设备(API 21),我的要求是将此应用程序构建到API 17.因此需要您的建议和任何API相同。
提前谢谢!
答案 0 :(得分:1)
您是否考虑过使用ConnectivityManager
来监控Monitoring the Connectivity Status?当wifi可用时,您可以收到广播事件并恢复/开始上传。
来自Android文档:
确定您是否有互联网连接
ConnectivityManager cm =
(ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo activeNetwork = cm.getActiveNetworkInfo();
boolean isConnected = activeNetwork != null &&
activeNetwork.isConnectedOrConnecting();
确定您的互联网连接类型
boolean isWiFi = activeNetwork.getType() == ConnectivityManager.TYPE_WIFI;
监控连接的变化
只要连接详细信息发生更改,ConnectivityManager就会广播CONNECTIVITY_ACTION ("android.net.conn.CONNECTIVITY_CHANGE")
操作。您可以在清单中注册广播接收器以收听这些更改并相应地恢复(或暂停)您的后台更新。
<action android:name="android.net.conn.CONNECTIVITY_CHANGE"/>
设备连接的更改可能非常频繁 - 每次在移动数据和Wi-Fi之间切换时都会触发此广播。因此,只有在您之前暂停更新或下载以恢复广播时,才能监控此广播。在开始更新之前,通常只需检查Internet连接即可,如果没有,则暂停进一步更新,直到连接恢复为止。
此技术需要切换您在清单中声明的广播接收器,这将在下一课中介绍。
这是另一个很好的资源:
http://www.grokkingandroid.com/android-getting-notified-of-connectivity-changes/