在Android上检查Wi-Fi是否已启用

58

如何检查Wi-Fi是否已启用?


可能是如何在Android中查看WiFi是否已连接的重复问题。 - Ciro Santilli OurBigBook.com
2
点赞以弥补酸葡萄的心态 :) - nsandersen
4个回答

119
WifiManager wifiManager = (WifiManager) getSystemService(Context.WIFI_SERVICE);
if (wifiManager.isWifiEnabled()) {
  // wifi is enabled
}

有关详细信息请查看此处


2
如果 (wifi.isWifiEnabled()) {//wifi已启用 } - inforg
2
这需要 <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />。抱歉如果这很明显,但我遇到了一个意外的运行时错误。 - user420667
1
请编辑回答以包括所需的权限。我的IDE还建议我使用getApplciationContext()而不是getSystemService() - Zapnologica

25

以上答案可以正常工作。但是不要忘记在清单文件中添加正确的权限:

<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/>

希望能对你有所帮助..


1
我认为我们不需要CHANGE_WIFI_STATE。 - LoveForDroid
@LoveForDroid:为什么? - McLan

17

最佳答案是正确的,但由于此代码可能会在某些设备上泄露内存,因此不是最新的。

因此更好的答案应该是:

WifiManager wifiManager = (WifiManager) getApplicationContext().getSystemService(Context.WIFI_SERVICE);
if (wifiManager.isWifiEnabled()) {
  // wifi is enabled
}

应用程序中的权限=>主清单文件=>AndroidManifest.xml:

<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />

参考资料:https://www.mysysadmintips.com/other/programming/759-the-wifi-service-must-be-looked-up-on-the-application-context


1
你是对的,但在你的第二个 uses-permission 行中,将“(”更改为“/”。 - Curious Mind
1
@CuriousMind 谢谢,我已经修改了。 - KoKlA

8
public static boolean wifiState() {
    WifiManager wifiManager = (WifiManager) getSystemService(Context.WIFI_SERVICE);
    return wifiManager.isWifiEnabled();
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接