我搜索了堆棧溢出並找不到檢測此應用程序設置的答案。在Android的棉花糖存在設置一個選項:如果爲Android應用程序啓用了「限制後臺數據」,則以編程方式進行檢測
設置 - 「限制應用後臺數據」
「蜂窩網絡上禁用背景資料:」我想提醒>切換 - >數據使用 - >我的應用用戶如果這在我的應用程序中設置。我如何檢測這是否爲我的應用程序設置。任何指針讚賞。
我搜索了堆棧溢出並找不到檢測此應用程序設置的答案。在Android的棉花糖存在設置一個選項:如果爲Android應用程序啓用了「限制後臺數據」,則以編程方式進行檢測
設置 - 「限制應用後臺數據」
「蜂窩網絡上禁用背景資料:」我想提醒>切換 - >數據使用 - >我的應用用戶如果這在我的應用程序中設置。我如何檢測這是否爲我的應用程序設置。任何指針讚賞。
您可以使用getActiveNetworkInfo()
當後臺數據是不可用的,getActiveNetworkInfo()現在 出現斷線。
供參考:
據的Android參考,getBackgroundDataSetting
返回設定爲背景數據使用的值。如果爲false,則 應用程序不應使用網絡,前提是該應用程序不在 之前。
然而這個被廢棄在API級別14
getActiveNetworkInfo()的問題在於,當您使用wifi時,它會被連接。它不會告訴你該應用是否已禁用Cellular背景設置.. :( – user3570727
每最新的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()爲其動態註冊的應用程序。註冊在其清單中接收此廣播的應用程序將不會收到它們。
找到了解決辦法嗎? –
另外,如何確定整個手機的背景數據已被禁用還是僅針對我的應用? – Zapnologica