2017-04-13 148 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您還可以在其中學習如何請求白名單權限並監聽對「數據保護程序」首選項的更改。

相關問題