我有一个在主线程上运行而不是在后台运行的服务。在服务中,我正在通过广播接收器检查网络连接。当我启用限制数据已启用在“设置”中,广播接收器可以很好地捕捉意图,但我的应用程序已禁用互联网连接(移动数据),尽管它在我的设备上。我见过这个问题 https://stackoverflow.com/questions/8996327/how-to-enable-the-background-data-settings-in-android, and 安卓文档 http://developer.android.com/reference/android/net/ConnectivityManager.html#ACTION_BACKGROUND_DATA_SETTING_CHANGED.
intentFilter.addAction("android.net.conn.ACTION_BACKGROUND_DATA_SETTING_CHANGED");
intentFilter.addAction("android.net.conn.CONNECTIVITY_CHANGE");
registerReceiver(this.connectionStatusReceiver, intentFilter);
private BroadcastReceiver connectionStatusReceiver = new BroadcastReceiver() {
@Override
public synchronized void onReceive(Context context, Intent intent) {
log.info("connection state changed");
checkConnectionState();
}
};
getActiveNetworkInfo() - *will always display CONNECTED when i switch on *restriction**
另一件事,当我打开后台数据限制时,我检查了intent.getAction
。它总是会回来android.net.conn.CONNECTIVITY_CHANGE
。
如何检查后台限制数据是否打开/关闭?
您可以从 Android 7.0 (API 24) 及更高版本进行检查。谷歌在其 Android 开发者网站中添加了该指南。链接在这里优化网络数据使用 https://developer.android.com/training/basics/network-ops/data-saver.html
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)