java - 当 Android 的数据保护程序关闭时获取“BLOCKED”网络状态
问题描述
我正在开发一个在运行 Android 7.0 的特定平板电脑上使用的应用程序。我正在使用 aService
发送周期性DatagramPacket
s。我只能使用移动网络。ConnectivityManager
我使用和检查连接NetworkInfo
状态DetailedState
。我使用以下代码获取网络状态:
ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo activeNetwork = cm.getActiveNetworkInfo();
DetailedState networkState = activeNetwork.getDetailedState();
在我的平板电脑中,流量节省程序已关闭。以防万一,我已经运行测试以验证屏幕关闭时没有限制,即使网络被阻塞,cm.getRestrictBackgroundStatus()
总是返回 1,即RESTRICT_BACKGROUND_STATUS_DISABLED 。
那么,为什么网络被封锁了呢?我的应用程序需要特殊权限吗?我的平板电脑需要特殊配置吗?
解决方案
这是正常行为。当您的屏幕被锁定时,它会使用打盹模式。打盹模式关闭互联网通信和所有后台服务。您需要唤醒您的设备,然后才能使用互联网进行所有操作。文件资料
推荐阅读
- c++ - 多网络连接的线程与异步 I/O
- email - Norifications:: 不传递特定数据但使用数组
- jenkins - 运行通过 WAR 文件创建的 Jenkins 服务时更改端口
- mysql - 使用数据时间过滤mysql数据库中的数据(今天,7天,1个月和1年)
- php - 如何撤消或停止 php artisan schedule:run
- core-location - 未从 Siri Intents 调用 CLLocationManager 委托
- linux - Makefile 生成文件的数字列表
- sqlitestudio - SQLite Studio 无法加载数据库 - 红色感叹号
- javascript - 如何通过 php 将正则表达式变量保存为 .json 文件?
- ios - Is it possible to ship an IOS app with different data on each app?