2012-12-27 47 views
8

我用下面的代碼,我的目標是API-15WIFI_SLEEP_POLICY_NEVER如何在API-17中設置?

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

當代碼平臺上的API-17運行,我得到的logcat的warnigns,

設置wifi_sleep_policy已經從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); 

     } 

因此,我開始變得以下拋出:SecurityException在平臺的API-17

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

然後我檢查了WRITE_SECURE_SETTINGS權限僅適用於系統應用程序,我無法使用它編譯我的代碼,就好像此權限僅適用於系統應用程序一樣。

所以我很困惑的是我早先得到的警告是錯誤的,或者是我的代碼有什麼問題,我想讓它與API-17兼容。

回答

1

不幸的是,由於它是has been deprecated,所以不能再從API-17開始更改此設置。

正如你所說,WRITE_SECURE_SETTINGS權限只授給系統應用程序,因此最好的辦法是要求用戶手動設置從WiFi設置此選項:

startActivity(new Intent(Settings.ACTION_WIFI_SETTINGS)); 
相關問題