1

根据 Android SDK 文档ConnectivityManagergetBackgroundDataSetting()在 Android 4.x 中已弃用,getActiveNetworkInfo()应该使用它来查看是否禁用了后台数据:

http://developer.android.com/reference/android/net/ConnectivityManager.html#getBackgroundDataSetting()

但是,关闭同步后,当我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()也不返回 false。isConnect()

NetworkInfo我应该查询是否有不同的方法来查看后台数据是否被禁用?仅供参考,我正在使用警报驱动的服务,而不是使用 SyncAdapter API,如果这有影响的话。

谢谢,

4

1 回答 1

0

“背景数据”设置已在 ICS 中移动。它与“同步”设置分开。

您可以在设置 -> 数据使用 -> 菜单按钮 -> 限制背景数据下找到“背景数据”设置。

getActiveNetworkInfo() 确实尊重此设置。

另请参阅https://android.stackexchange.com/a/17456

于 2012-08-21T19:56:45.007 回答