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() を確認することもできます。
ドキュメントの完全な例では、ホワイトリストの許可を要求する方法や、データセーバーの設定に対する変更をリッスンする方法も学習できます。