2012-12-27 9 views
8

używałem następujący kod, mój cel jest API-15WIFI_SLEEP_POLICY_NEVER jak ustawić w API-17?

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

Gdy kod jest uruchamiany na platformie API-17 mam warnigns w LogCat,

Ustawianie wifi_sleep_policy został przeniesiony z android.provider. Ustawienia.System do android.provider.Settings.Global, wartość nie ulega zmianie.

Więc co zrobiłem po tym został ustalony mój cel projektu API-17 i wykorzystywane ten kod

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

     } 

W rezultacie zacząłem się następujące SecurityException w platformie API-17

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

Następnie sprawdziłem, czy uprawnienie WRITE_SECURE_SETTINGS dotyczy tylko aplikacji systemowych i nie mogłem skompilować z nim mojego kodu, tak jakby to uprawnienie dotyczyło tylko aplikacji systemowych.

Więc jestem zdezorientowany, że ostrzeżenie, które dostałem wcześniej, było złe lub jest coś złego w moim kodzie, chcę, aby było kompatybilne z API-17.

Odpowiedz

1

Niestety, zmiana tego ustawienia z API-17 nie jest już możliwa, ponieważ jest to has been deprecated.

Jak pan powiedział, zezwolenie WRITE_SECURE_SETTINGS jest przyznawana wyłącznie do aplikacji systemowych, a więc najlepszym rozwiązaniem jest, aby zwrócić się do użytkownika, aby ręcznie ustawić tę opcję w ustawieniach WiFi:

startActivity(new Intent(Settings.ACTION_WIFI_SETTINGS));