如何在Android设备上编程关闭WiFi?

107

在按下“关闭屏幕”按钮后,我需要暂时关闭WiFi。 因为有时我会忘记关闭WiFi,这会导致电池电量迅速耗尽,在没有WiFi的情况下,它的寿命是我的10倍以上。 是否有可用的.apk解决方案? 我是否可以跟踪屏幕关闭和5分钟过去了? 我如何在Android设备上以编程方式关闭WiFi?


2
如果只是针对您自己的设备,那么Android系统在“WiFi设置”->“高级”下提供了“WiFi睡眠策略”选项。您可以启用此选项,在15分钟后关闭WiFi。 - Māris Kiseļovs
我没有得到这个功能,在我的WiFi的高级设置中,我只有协议配置(DNS、静态IP、MAC等)。 - J.Olufsen
1个回答

241
您需要在清单文件中添加以下权限:
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission>
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE"></uses-permission>

然后您可以在活动类中使用以下内容:

WifiManager wifiManager = (WifiManager) this.getApplicationContext().getSystemService(Context.WIFI_SERVICE); 
wifiManager.setWifiEnabled(true);
wifiManager.setWifiEnabled(false);

使用以下代码来检查它是否已启用。
boolean wifiEnabled = wifiManager.isWifiEnabled()

关于这个主题,你可以在this网站上找到一个很好的教程。


12
为什么需要使用唤醒锁(wake-lock)? - benbeel
2
我认为额外的权限只是直接从他提供的链接复制代码的结果,但即便如此,UPDATE_DEVICE_STATS仅保留给系统应用程序使用,该应用程序甚至无法使用该权限进行编译。 - Jasjit Singh Marwah
3
似乎只需要使用“CHANGE_WIFI_STATE”,而不需要使用“ACCESS_WIFI_STATE”。 - hata
3
请注意,此方法在 Android 10 中已不再适用。您需要在那里使用 Settings.Panel.ACTION_WIFI - Mygod
7
从Android 10(Q)版本开始,应用程序不允许启用/禁用Wi-Fi。因此,当我们在Android 10或更高版本上执行wifiManager.setWifiEnabled(true)时,它将不允许启用/禁用Wifi。 - Dhaval Shah
显示剩余6条评论

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