【发布时间】:2016-04-25 09:04:22
【问题描述】:
我想在广播接收器中检查设备是否已连接。 以下是我的代码:
public boolean isOnline(Context context) {
NetworkInfo info = (NetworkInfo) ((ConnectivityManager) context
.getSystemService(Context.CONNECTIVITY_SERVICE)).getActiveNetworkInfo();
if (info == null || !info.isConnected()) {
Log.e("UpdateDataReceiver","info: "+info);
return false;
}
return true;
}
我的代码有问题: 当 BroadcastReceiver 在后台触发时(当应用程序在后台时),上面的函数返回 false(即使连接了 wifi) 当应用在前台时返回true。
信息:NetworkInfo:类型:WIFI[],状态:DISCONNECTED/BLOCKED,原因: (未指定),额外:(无),漫游:假,故障转移:假, isAvailable: true, isConnectedToProvisioningNetwork: false, simId: 0
设备信息:Redmi Note
【问题讨论】:
-
也许你应该扩展 WakefulBroadcastReceiver
-
似乎 BLOCKED 可能意味着断电以节省电池。我在这种状态下尝试了一个网络请求,它确实通过了,但延迟比正常情况要长。
-
我遇到了同样的问题,并在 Google 的问题跟踪器上发现了一个似乎适合的问题:issuetracker.google.com/issues/37137911 作为快速修复,我使用了stackoverflow.com/a/45231746/1394330 中提到的类似的后备解决方案/跨度>
标签: android