2012-12-27 5 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); 

で、次のコードを使用していたコードは、私がlogcatでwarnignsを取得し、プラットフォームのAPI-17上で実行すると、

設定wifi_sleep_policyがandroid.providerから移動しました。 Settings.Systemからandroid.provider.Settings.Globalへの値は変更されません。

だからそれは、API-17に私のプロジェクトの目標を設定し、私はプラットフォームAPI-17

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

で次SecurityExceptionを取得し始めた結果、このコード

 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と互換性を持たせたいと思っていたのは混乱しました。

答えて

1

残念ながら、has been deprecated以降、この設定をAPI-17以降に変更することはできません。

あなたが言ったように、WRITE_SECURE_SETTINGS許可は唯一のシステムアプリケーションに付与されますので、最善の選択肢は、手動で無線LANの設定からこのオプションを設定するには、ユーザーを依頼することです:

startActivity(new Intent(Settings.ACTION_WIFI_SETTINGS)); 
関連する問題