官方地址:Data Saver
优化网络流量消耗
在智能手机的整个生命周期,移动数据网络计划的成本通常会超出设备本身的成本。 从 Android 7.0(API 级别 24)开始,用户可以在整个设备上启用流量节省程序,以优化其设备的流量消耗,并减少流量消耗。 无论是在漫游、账单周期即将结束,还是使用少量的预付费数据包,此功能都特别有用。
检查流量节省程序首选项
ConnectivityManager connMgr = (ConnectivityManager)
getSystemService(Context.CONNECTIVITY_SERVICE);
// 检查设备是否在计费网络
if (connMgr.isActiveNetworkMetered()) {
// Checks user’s Data Saver settings.
switch (connMgr.getRestrictBackgroundStatus()) {
case ConnectivityManager.RESTRICT_BACKGROUND_STATUS_ENABLED:
// 用户已为此应用启用流量节省程序。应用应努力限制前台流量消耗,并妥善处理后台流量消耗限制。
case ConnectivityManager.RESTRICT_BACKGROUND_STATUS_WHITELISTED:
// 用户已启用流量节省程序,但应用在白名单中。应用应努力限制前台和后台流量消耗。
case ConnectivityManager.RESTRICT_BACKGROUND_STATUS_DISABLED:
// 流量节省程序已停用。
}
} else {
// 设备不在计费网络,为所欲为
}
申请白名单
/**
* 除非应用的核心功能受到不利影响,否则 Google Play 政策禁止应用请求直接豁免 Android 6.0+ 中的电源管理功能(低电耗模式和应用待机模式)
*/
@SuppressLint("ObsoleteSdkInt")
@TargetApi(23)
public void addDataSaverWhite(Activity activity) {
if (Build.VERSION.SDK_INT >= 23) {
ConnectivityManager connMgr = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
if (connMgr != null && connMgr.getRestrictBackgroundStatus() == ConnectivityManager.RESTRICT_BACKGROUND_STATUS_ENABLED) {
Intent intent = new Intent(Settings.ACTION_IGNORE_BACKGROUND_DATA_RESTRICTIONS_SETTINGS);
intent.setData(Uri.parse("package:" + activity.getPackageName()));
activity.startActivity(intent);
}
}
}