可以通过 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() 如果您应该限制数据使用,无论是否启用或禁用数据保护程序,或者您的应用程序是否被列入白名单。
文档中的完整示例,您还可以在其中了解如何请求白名单权限并听取对数据保护程序首选项的更改。