我搜索了堆栈溢出,找不到为我的应用程序检测此设置的答案。在Android Marshmallow中,“设置”中有一个选项:
设置 - >数据使用 - >我的应用 - >切换“限制应用程序后台数据”,“禁用蜂窝网络上的后台数据”
我想警告用户是否在我的应用中设置了此项。如何检测是否为我的应用设置了此项。任何指针都赞赏。
答案 0 :(得分:1)
根据Android 7.0开始的最新Android文档(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()来检查新的数据保护程序首选项是否影响其权限。
注意:系统仅将此广播发送给使用Context.registerReceiver()动态注册它们的应用程序。注册为在其清单中接收此广播的应用程序将不会收到它们。
答案 1 :(得分:0)
您可以使用getActiveNetworkInfo()
当后台数据不可用时,getActiveNetworkInfo()将立即生效 似乎已断开连接。
<强>供参考:强>
根据Android参考资料getBackgroundDataSetting
返回后台数据使用设置的值。如果是假的, 如果应用程序不在,则应用程序不应使用网络 前景。
然而,这在API级别14中已被弃用。