2012-12-27 7 views
8

ich folgenden Code verwenden, mein Ziel ist API-15WIFI_SLEEP_POLICY_NEVER wie in API-17 eingestellt?

android.provider.Settings.System.putInt(cr, 
         android.provider.Settings.System.WIFI_SLEEP_POLICY, 
         android.provider.Settings.System.WIFI_SLEEP_POLICY_NEVER); 

Wenn der Code läuft auf Plattform-API-17 I erhalten warnigns im logcat,

Einstellung wifi_sleep_policy von android.provider bewegt hat. Settings.System zu android.provider.Settings.Global, Wert ist unverändert.

Also, was ich tat, nachdem dass mein Projekt Ziel APi-17 eingestellt wurde und diesen Code verwendet

 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); 

     } 

Als Ergebnis begann ich folgende Security in Plattform Api-17

  java.lang.SecurityException: Permission denial: writing to secure settings requires android.permission.WRITE_SECURE_SETTINGS 

bekommen Dann habe ich überprüft, dass die Berechtigung WRITE_SECURE_SETTINGS nur für System-Apps gilt, und ich konnte meinen Code damit nicht kompilieren, als ob diese Berechtigung nur für System-Apps gilt.

Also ich bin verwirrt war die Warnung, die ich früher bekam, war falsch oder ist irgendetwas falsch mit meinem Code, ich möchte es kompatibel mit API-17 machen.

Antwort

1

Leider ist es nicht mehr möglich, diese Einstellung seit der API-17 seit dem has been deprecated zu ändern.

Wie Sie sagen, die WRITE_SECURE_SETTINGS Erlaubnis wird nur auf System-Anwendungen gewährt und so die beste Alternative ist es, den Benutzer zu fragen, diese Option manuell aus den WLAN-Einstellungen auf:

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