Data Saver 小节

官方地址: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);
            }
        }
    }

这里写图片描述

猜你喜欢

转载自blog.csdn.net/momo_ibeike/article/details/79500588