package androidx.core.net; import android.annotation.SuppressLint; import android.content.Intent; import android.net.ConnectivityManager; import android.net.NetworkInfo; import android.os.Build; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.annotation.RequiresPermission; import androidx.annotation.RestrictTo; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; public final class ConnectivityManagerCompat { public static final int RESTRICT_BACKGROUND_STATUS_DISABLED = 1; public static final int RESTRICT_BACKGROUND_STATUS_ENABLED = 3; public static final int RESTRICT_BACKGROUND_STATUS_WHITELISTED = 2; @Retention(RetentionPolicy.SOURCE) @RestrictTo({RestrictTo.Scope.LIBRARY_GROUP_PREFIX}) public @interface RestrictBackgroundStatus { } private ConnectivityManagerCompat() { } @Nullable @RequiresPermission("android.permission.ACCESS_NETWORK_STATE") @SuppressLint({"ReferencesDeprecated"}) public static NetworkInfo getNetworkInfoFromBroadcast(@NonNull ConnectivityManager connectivityManager, @NonNull Intent intent) { NetworkInfo networkInfo = (NetworkInfo) intent.getParcelableExtra("networkInfo"); if (networkInfo != null) { return connectivityManager.getNetworkInfo(networkInfo.getType()); } return null; } public static int getRestrictBackgroundStatus(@NonNull ConnectivityManager connectivityManager) { if (Build.VERSION.SDK_INT >= 24) { return connectivityManager.getRestrictBackgroundStatus(); } return 3; } @RequiresPermission("android.permission.ACCESS_NETWORK_STATE") public static boolean isActiveNetworkMetered(@NonNull ConnectivityManager connectivityManager) { return connectivityManager.isActiveNetworkMetered(); } }