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;
    }
}

同期をオフにすると、falseisAvailable()も返されません。isConnect()

NetworkInfoバックグラウンドデータが無効になっているかどうかを確認するために、代わりにクエリを実行する必要がある別の方法はありますか? 参考までに、私はアラーム駆動型のサービスを使用しており、SyncAdapter API を使用していません。

ありがとう、

ロブ

4

1 に答える 1

0

「バックグラウンド データ」設定は ICS に移動しました。「同期」設定とは別のものです。

「バックグラウンド データ」設定は、[設定] -> [データ使用] -> [メニュー] ボタン -> [バックグラウンド データの制限] にあります。

getActiveNetworkInfo() はこの設定を尊重します。

https://android.stackexchange.com/a/17456も参照してください。

于 2012-08-21T19:56:45.007 に答える