2017-04-13 145 views
2

Android 7.0 Nougat增加了数据保护功能,允许用户限制某些应用程序的背景数据(包括推送通知)。当数据Saver打开,在有没有办法知道Data Saver是否启用?

设置→数据保护程序→无限制的数据访问

被允许接收推送通知和执行后台网络电话发现,只有在名单上的应用。 如果数据保护程序处于关闭状态,并且您的应用程序不在不受限制的列表中,则与设置推送通知非常相似。

我的应用程序中有一个用例,它等待推送通知。

我不知道是否有办法找出Data Saver是否已启用,并且如果我的应用程序位于“无限制数据访问”列表中,以了解是否为我的应用程序启用了推送通知,并且因此如果有一个点在等待推送,并有机会执行任何网络电话,而应用程序在特定时间后台。

回答

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; 
    } 
} 

可能前景。

如果您应该限制数据使用量,无论您启用还是禁用了Data Saver,或者您的应用程序已被列入白名单,您也可以检查ConnectivityManager.isActiveNetworkMetered()

完整示例in the docs您还可以在其中学习如何请求白名单权限并监听对“数据保护程序”首选项的更改。

相关问题