Android 如何以编程方式修改Wi-Fi睡眠策略?

Android 如何以编程方式修改Wi-Fi睡眠策略?,android,Android,我想在设备进入睡眠模式时启用Wi-Fi,我尝试了几个选项,但都没有像获取Wi-Fi锁定和设置Wi-Fi启用这样的效果。这些选项不起作用,然后我尝试使用wake lock,当我的应用程序在前台运行时,它可以完美地工作,但当应用程序在后台运行时,过了一段时间,过量的唤醒锁错误出现,应用程序被破坏,除此之外,我不能一直使用唤醒锁,因为它会耗尽电池。实际要求是,我的应用程序应该全天候运行,并且与服务器的连接始终保持打开,因为服务器可以随时发送数据,但当设备进入睡眠模式时,wi-fi将被关闭,因此我需要在

我想在设备进入睡眠模式时启用Wi-Fi,我尝试了几个选项,但都没有像获取Wi-Fi锁定和设置Wi-Fi启用这样的效果。这些选项不起作用,然后我尝试使用wake lock,当我的应用程序在前台运行时,它可以完美地工作,但当应用程序在后台运行时,过了一段时间,过量的唤醒锁错误出现,应用程序被破坏,除此之外,我不能一直使用唤醒锁,因为它会耗尽电池。实际要求是,我的应用程序应该全天候运行,并且与服务器的连接始终保持打开,因为服务器可以随时发送数据,但当设备进入睡眠模式时,wi-fi将被关闭,因此我需要在启动应用程序时将wi-fi睡眠策略设置为从不,并在应用程序被破坏时将设置回正常策略。我在我的主要活动中尝试了以下代码,并运行应用程序,允许设备进入睡眠模式,一段时间后,连接仍处于关闭状态:

Settings.System.putInt(getContentResolver(),
Settings.System.WIFI_SLEEP_POLICY, 
Settings.System.WIFI_SLEEP_POLICY_NEVER);

所以请帮我解决这个问题。

使用
导入静态android.provider.Settings.System.WIFI\u SLEEP\u策略
而不是名称字符串
Settings.System.WIFI\u SLEEP\u POLICY

它工作得很好。

在我的例子中,Settings.System.WIFI\u SLEEP\u策略不起作用。我可以通过PowerManager保持wi-fi连接

然后在OnDestroy()中调用


神圣的句子运行…嗨@android fan,它在最新版本中已被弃用,因此最新版本(即5.0及以上)是否有替代方案?您如何检查wifi是否处于待机状态或活动状态?我是说,如何检查PowerManager是否工作?
final PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "My Tag");
wl.acquire();
wl.release();