这就是我想做的事情:
=>如果WiFi已启用且处于活动状态,则启动一个意图(实际上它是一个获取其内容的WebView =>我在网络上的应用程序的说明)
=>如果不是,那么我会启动另一个意图,这样我就不会显示WebView“网页不可用...... http://www.mywebsite.com的网页可能暂时关闭或者它可能已经移动......”
我最初打算使用
如果(wifi.isWifiEnabled())
但这并没有说明Wifi连接是否为ACTIVE . 它只表示用户已打开开关 . 设备可能连接也可能没有连接......这是正确的吗?
然后我试着用:
if(wifi.getConnectionInfo() . getSSID()!= null)
但我注意到它返回一个字符串,即使连接已丢失或被禁用...?
那我该怎么办?
wifi = (WifiManager)getSystemService(Context.WIFI_SERVICE);
Intent intent_instructions;
if (wifi.getConnectionInfo().getSSID()!= null){
Log.i("Hub", "WiFi is enabled AND active !");
Log.i("Hub", "SSID = "+wifi.getConnectionInfo().getSSID());
intent_instructions = new Intent(this, Instructions.class);
}else{
Log.i("Hub", "NO WiFi");
intent_instructions = new Intent(this, Instructions_No_WiFi.class);
}
this.startActivity(intent_instructions);
是否有更通用的方法来测试设备是否在启动意图之前连接到互联网?无论是通过Wifi,3G等...
在此先感谢您的帮助 .
5 回答
试试
android.net.ConnectivityManager.getActiveNetworkInfo()
:如果它返回null
你没有连接;如果它返回一个NetworkInfo
对象,你可以用NetworkInfo.getState()
检查连接的状态,如果它是NetworkInfo.State.CONNECTED
那么你're connected, else you'则没有 .您可以使用以下代码检查连接:
请确保您已在Manifest中注册了android.net.conn.CONNECTIVITY_CHANGE意图,否则,您将永远不会收到有关您在线的通知 .
在过去的几天里,我一直在努力解决这个问题,现在我才意识到我需要注册CONNECTIVITY_CHANGE而不仅仅是WIFI_STATE_CHANGED .
你可以这样做:
您将获得0,1,2,3取决于Wifi所处的状态,因此例如2连接,您可以检查文档中的其余部分
在您的BroadcastReceiver类中:
在AndroidManifest.xml中,请确保注册android.net.wifi.supplicant.CONNECTION_CHANGE广播意图 .
isConnected()
没有完全正常工作,研究别的东西此代码检查你是否使用wifi或3g或什么都没有,在wifi打开的情况下但没有连接到网络或3g有信号问题它检测到这个细节,
DetailedStates