【问题标题】:How to know if data Saver is enabled on android phones如何知道Android手机上是否启用了数据保护程序
【发布时间】:2020-05-14 14:59:44
【问题描述】:

我知道有几个类似的问题, ConnectionManager.getRestrictBackgroundStatus() 将告诉我是否为我的应用禁用后台数据。

对于我的用例,我想具体了解是否为所有应用启用了流量节省程序

设置->dataSaver->restrictBackgroundData

或特定应用后台数据被禁用

app_Name->Info->Network->disable_backgroundData

ConnectionManager.getRestrictBackgroundStatus() 在这两种情况下都会给我相同的答案,我怎么知道启用了哪个特定设置?

【问题讨论】:

    标签: java android kotlin android-datasaver


    【解决方案1】:

    由于 Android Lollipop 我们有 isPowerSaveMode() ,这里是示例-

    PowerManager powerManager = (PowerManager)
        getActivity().getSystemService(Context.POWER_SERVICE);
    if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP
            && powerManager.isPowerSaveMode()) {
        // Animations are disabled in power save mode, so just show a toast instead.
        Toast.makeText(mContext, getString(R.string.toast), Toast.LENGTH_SHORT).show();
    }
    

    【讨论】:

    • 节电模式和省电模式不是两个不同的东西吗?
    【解决方案2】:

    可以通过 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() 是否应该限制数据使用,无论是否启用或禁用数据保护程序,或者您的应用是否被列入白名单。

    文档中的完整示例,您还可以在其中了解如何请求白名单权限并听取数据保护程序首选项的更改。

    【讨论】:

    • 嗨拉维,我想你没有得到我的问题,请正确阅读。我已经看到你在其他帖子中提到的答案。为了明确我的问题,可以通过两种方式禁用应用程序后台数据,一种是数据保护程序,另一种是进入 appInfo 并禁用该特定应用程序的背景数据,我想知道启用了哪个设置。通过 connMgr.getRestrictBackgroundStatus() 你不会因为设置后台数据被禁用而得到。
    猜你喜欢
    • 2017-02-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-20
    • 1970-01-01
    • 2011-08-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多