Android WIFI\u睡眠\u策略\u如何在API-17中设置?

Android WIFI\u睡眠\u策略\u如何在API-17中设置?,android,Android,我使用了下面的代码,我的目标是API-15 android.provider.Settings.System.putInt(cr, android.provider.Settings.System.WIFI_SLEEP_POLICY, android.provider.Settings.System.WIFI_SLEEP_POLICY_NEVER); 当代码在API-17平台上运行时,我在log

我使用了下面的代码,我的目标是API-15

android.provider.Settings.System.putInt(cr, 
                        android.provider.Settings.System.WIFI_SLEEP_POLICY, 
                        android.provider.Settings.System.WIFI_SLEEP_POLICY_NEVER);
当代码在API-17平台上运行时,我在logcat中得到警告

设置wifi_睡眠_策略已从android.provider.Settings.System移动到android.provider.Settings.Global,值不变

因此,我在那之后做的是将我的项目目标设置为APi-17并使用此代码

        if(Build.VERSION.SDK_INT < 17)
        {
            android.provider.Settings.System.putInt(cr, 
                        android.provider.Settings.System.WIFI_SLEEP_POLICY, 
                        android.provider.Settings.System.WIFI_SLEEP_POLICY_NEVER);
        }
        else            
        {               
            android.provider.Settings.Global.putInt(cr, 
                    android.provider.Settings.Global.WIFI_SLEEP_POLICY, 
                    android.provider.Settings.Global.WIFI_SLEEP_POLICY_NEVER);

        }
然后我检查了WRITE_SECURE_SETTINGS权限仅适用于系统应用程序,我无法使用它编译代码,就好像此权限仅适用于系统应用程序一样


所以我很困惑我之前得到的警告是错误的还是我的代码有什么问题,我想让它与API-17兼容

不幸的是,从API-17开始无法再更改此设置,因为它已被禁用

正如您所说的,
WRITE\u SECURE\u SETTINGS
权限仅授予系统应用程序,因此最好的选择是要求用户从wifi设置手动设置此选项:

startActivity(new Intent(Settings.ACTION_WIFI_SETTINGS));
startActivity(new Intent(Settings.ACTION_WIFI_SETTINGS));