0

これに似た質問がいくつかあることは知ってい ConnectionManager.getRestrictBackgroundStatus()ますが、アプリのバックグラウンド データが無効になっているかどうかを教えてくれます。

私のユースケースでは、データセーバーがすべてのアプリで有効になっているかどうかを具体的に知りたい

settings->dataSaver->restrictBackgroundData

または特定のアプリのバックグラウンド データが無効になっている

app_Name->Info->Network->disable_backgroundData

ConnectionManager.getRestrictBackgroundStatus()どちらの場合も同じ答えが得られますが、どの特定の設定が有効になっているかを知るにはどうすればよいですか?

4

2 に答える 2

0

ConnectivityManager.getRestrictBackgroundStatus() を介して、データセーバーが有効になっているかどうか、アプリがホワイトリストに登録されているかどうかを確認できます。

public boolean checkBackgroundDataRestricted() {
  ConnectivityManager connMgr = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);

  switch (connMgr.getRestrictBackgroundStatus()) {
    case RESTRICT_BACKGROUND_STATUS_ENABLED:
    // Background data usage and push notifications are blocked for this app
    return true;

    case RESTRICT_BACKGROUND_STATUS_WHITELISTED: 
    case RESTRICT_BACKGROUND_STATUS_DISABLED:
    // Data Saver is disabled or the app is whitelisted  
    return false;
  }
}

データセーバーが有効になっていて、アプリがホワイトリストに登録されていない場合、アプリがフォアグラウンドにある場合にのみプッシュ通知が配信されます。

データセーバーが有効か無効か、またはアプリがホワイトリストに登録されているかに関係なく、データ使用を制限する必要がある場合は、ConnectivityManager.isActiveNetworkMetered() を確認することもできます。

ドキュメントの完全な例では、ホワイトリストの許可を要求する方法や、データセーバーの設定に対する変更をリッスンする方法も学習できます。

于 2020-01-29T09:20:42.360 に答える