2016-06-27 39 views
4

我搜索了堆棧溢出並找不到檢測此應用程序設置的答案。在Android的棉花糖存在設置一個選項:如果爲Android應用程序啓用了「限制後臺數據」,則以編程方式進行檢測

設置 - 「限制應用後臺數據」

「蜂窩網絡上禁用背景資料:」我想提醒>切換 - >數據使用 - >我的應用用戶如果這在我的應用程序中設置。我如何檢測這是否爲我的應用程序設置。任何指針讚賞。

+1

找到了解決辦法嗎? –

+0

另外,如何確定整個手機的背景數據已被禁用還是僅針對我的應用? – Zapnologica

回答

0

您可以使用getActiveNetworkInfo()

當後臺數據是不可用的,getActiveNetworkInfo()現在 出現斷線。

Reference

供參考:

據的Android參考,getBackgroundDataSetting

返回設定爲背景數據使用的值。如果爲false,則 應用程序不應使用網絡,前提是該應用程序不在 之前。

然而這個被廢棄在API級別14

+0

getActiveNetworkInfo()的問題在於,當您使用wifi時,它會被連接。它不會告訴你該應用是否已禁用Cellular背景設置.. :( – user3570727

0

每最新的Android文檔自Android 7.0(API級別24)...

https://developer.android.com/training/basics/network-ops/data-saver.html

ConnectivityManager connMgr = (ConnectivityManager) 
    getSystemService(Context.CONNECTIVITY_SERVICE); 
// Checks if the device is on a metered network 
if (connMgr.isActiveNetworkMetered()) { 
    // Checks user’s Data Saver settings. 
    switch (connMgr.getRestrictBackgroundStatus()) { 
    case RESTRICT_BACKGROUND_STATUS_ENABLED: 
    // Background data usage is blocked for this app. Wherever possible, 
    // the app should also use less data in the foreground. 

    case RESTRICT_BACKGROUND_STATUS_WHITELISTED: 
    // The app is whitelisted. Wherever possible, 
    // the app should use less data in the foreground and background. 

    case RESTRICT_BACKGROUND_STATUS_DISABLED: 
    // Data Saver is disabled. Since the device is connected to a 
    // metered network, the app should use less data wherever possible. 
    } 
} else { 
    // The device is not on a metered network. 
    // Use data as required to perform syncs, downloads, and updates. 
} 

監控數據保護程序首選項的更改 應用程序可以通過創建BroadcastReceiver來監控對Data Saver首選項的更改監聽ConnectivityManager.ACTION_RESTRICT_BACKGROUND_CHANGED並使用Context.registerReceiver()動態註冊接收方。當應用程序收到此廣播時,它應通過調用ConnectivityManager.getRestrictBackgroundStatus()來檢查新的Data Saver首選項是否影響其權限。

注意:系統僅將此廣播發送給使用Context.registerReceiver()爲其動態註冊的應用程序。註冊在其清單中接收此廣播的應用程序將不會收到它們。

相關問題