我甚至不希望我的用户尝试下载任何东西,除非他们连接了Wi-Fi。然而,我似乎只能判断Wi-Fi是否启用,但他们可能仍然有3G连接。
android.net.wifi.WifiManager m = (WifiManager) getSystemService(WIFI_SERVICE);
android.net.wifi.SupplicantState s = m.getConnectionInfo().getSupplicantState();
NetworkInfo.DetailedState state = WifiInfo.getDetailedStateOf(s);
if (state != NetworkInfo.DetailedState.CONNECTED) {
return false;
}
然而,状态并不是我所期望的。即使连接了Wi-Fi,我的状态仍然是OBTAINING_IPADDR
。
发布于 2010-10-01 17:00:35
您应该能够使用ConnectivityManager来获取Wi-Fi适配器的状态。从那里你可以使用check if it is connected or even available。
ConnectivityManager connManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo mWifi = connManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
if (mWifi.isConnected()) {
// Do whatever
}
备注:需要注意的是(这里是我们n00bies )您需要添加
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
致您的
AndroidManifest.xml才能正常工作。
NOTE2:public NetworkInfo getNetworkInfo (int networkType)
现在已弃用:
此方法在API级别23中已弃用。此方法不支持同一类型的多个连接网络。请改用getAllNetworks()和getNetworkInfo(android.net.Network)。
NOTE3:public static final int TYPE_WIFI
现在已弃用:
此常量在API级别28中已弃用。应用程序应该改为使用NetworkCapabilities.hasTransport(int)或requestNetwork(NetworkRequest,NetworkCallback)来请求适当的网络。用于支持的传输。
发布于 2016-01-20 15:42:37
由于方法NetworkInfo.isConnected()现在是 API-23中的已弃用的,下面是一个检测Wi-Fi适配器是否打开并使用WifiManager连接到接入点的方法:
private boolean checkWifiOnAndConnected() {
WifiManager wifiMgr = (WifiManager) getSystemService(Context.WIFI_SERVICE);
if (wifiMgr.isWifiEnabled()) { // Wi-Fi adapter is ON
WifiInfo wifiInfo = wifiMgr.getConnectionInfo();
if( wifiInfo.getNetworkId() == -1 ){
return false; // Not connected to an access point
}
return true; // Connected to an access point
}
else {
return false; // Wi-Fi adapter is OFF
}
}
发布于 2010-10-01 17:04:46
我只是简单地使用以下几点:
SupplicantState supState;
wifiManager = (WifiManager) getSystemService(Context.WIFI_SERVICE);
WifiInfo wifiInfo = wifiManager.getConnectionInfo();
supState = wifiInfo.getSupplicantState();
它将在您调用getSupplicantState()时返回这些状态之一;
关联-关联已完成。
关联-正在尝试与接入点关联。
已完成-已完成所有身份验证。
已断开连接-此状态表示客户端未关联,但可能会开始查找接入点。
DORMANT -Android添加的状态,在客户端发出显式断开命令时报告。
WPA4- FOUR_WAY_HANDSHAKE密钥握手正在进行中。
GROUP_HANDSHAKE -正在进行WPA组密钥握手。
INACTIVE -非活动状态。
无效-一种通常永远看不到的伪状态。
扫描-扫描网络。
UNINITIALIZED无连接。
https://stackoverflow.com/questions/3841317
复制相似问题