根据ConnectivityManager
的Android SDK文档,Android 4.x中不推荐使用getBackgroundDataSetting()
,而应使用getActiveNetworkInfo()
来查看是否禁用了后台数据:
但是,在关闭同步时,当我在服务中查询NetworkInfo
对象时,没有任何暗示后台数据被禁用的内容:
ConnectivityManager connMgr = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
// getBackgroundDataSetting always returns true on Android 4.x
if (connMgr != null && !connMgr.getBackgroundDataSetting()) {
Log.i(WootsUp.TAG, "background data off");
return;
}
if (connMgr != null) {
NetworkInfo netInfo = connMgr.getActiveNetworkInfo();
if (netInfo == null || netInfo.isAvailable() == false || netInfo.isConnected() == false) {
Log.i(WootsUp.TAG, "no active network");
return;
}
}
当我关闭同步时,isAvailable()
和isConnect()
都不会返回false。
在NetworkInfo
中是否有不同的方法我应该查询,看看是否禁用了后台数据?仅供参考我使用警报驱动的服务,而不是使用SyncAdapter API,如果这有所不同。
谢谢,
罗布
答案 0 :(得分:0)
“背景数据”设置已在ICS中移动。它与“同步”设置分开。
您可以在设置 - >下找到'背景数据'设置。数据使用 - >菜单按钮 - >限制背景数据。
getActiveNetworkInfo()确实尊重此设置。