1) 我的应用使用 BroadcastReceiver 监控互联网连接,但在 ARC 上运行时,禁用 WIFI 不会触发任何事件。
<receiver
android:name=".NetworkReceiver"
android:label="Network Monitor" >
<intent-filter android:priority="1" >
<action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
</intent-filter>
</receiver>
2)我尝试使用以下方法检查网络状态:
final ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
final NetworkInfo ni = connectivityManager.getActiveNetworkInfo();
boolean isConnected = ni!=null && ni.isConnected();
但即使“主机”未连接到任何网络,它也会显示为已连接。
3) 我尝试继续请求 URL 并检查是否发生异常,但这仅适用于在我的桌面上运行的 ARC。当我将应用程序发布到 chromebook 时,即使设置了 ConnectTimeout,请求也会处理(从不超时)。有趣的是,如果我启动应用程序时没有连接,它会引发异常。问题是只有在我的应用程序运行时禁用 WIFI - 然后一个请求才会“挂起”(仅在 chromebook 中,它适用于 ARC/Mac)。
URL url = new URL("http://www.google.com");
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setConnectTimeout(1000);
connection.connect();
有什么建议么?