2014-01-07 3 views
1

Я пытаюсь написать простое приложение, которое изменит настройки Android (мои версии 2.3.3), но у меня есть некоторые проблемы. Мой уровень API равен 10, поэтому я использую System.Secure, потому что Settings.System устарели, а Settings.Global - в новых API.Settings.Secure WIFI_ON Авария приложения для Android

Когда я использую этот код, приложение падает :(:

public class OnOff extends Activity { 
TextView msg; 
@Override 
public void onCreate(Bundle savedInstanceState) { 
super.onCreate(savedInstanceState); 
setContentView(R.layout.main); 
//buttonLED = (ToggleButton) findViewById(R.id.toggleButton); 
ToggleButton toggle = (ToggleButton) findViewById(R.id.toggleButton); 
toggle.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { 
    public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { 
     if (isChecked) { 
      // The toggle is enabled 
      Settings.Secure.putInt(getContentResolver(), Settings.Secure.WIFI_ON, 1); 
     } else { 
      // The toggle is disabled 
      Settings.Secure.putInt(getContentResolver(), Settings.Secure.WIFI_ON, 0); 
     } 
    } 
}); 
} 
} 

Конечно я использую разрешение в манифесте

<uses-permission android:name="android.permission.WRITE_SETTINGS" /> 
<uses-permission android:name="android.permission.WRITE_SECURE_SETTINGS" /> 

Я также попробовал этот код с андроида: OnClick = "тумблер", но он не работает слишком:/

public class OnOff extends Activity { 
TextView msg; 
private ToggleButton buttonLED; 
@Override 
public void onCreate(Bundle savedInstanceState) { 
super.onCreate(savedInstanceState); 
setContentView(R.layout.main); 
} 

public void toggle(View v){ 
if(buttonLED.isChecked()){ 
    Toast.makeText(OnOff.this, "Setting ON", Toast.LENGTH_SHORT).show(); 
    Settings.Secure.putInt(getContentResolver(), Settings.Secure.WIFI_ON, 1); 
} 
else{ 
    Toast.makeText(OnOff.this, "Setting OFF", Toast.LENGTH_SHORT).show(); 
    Settings.Secure.putInt(getContentResolver(), Settings.Secure.WIFI_ON, 0); 

} 
} 
} 

ли кто-нибудь имеет представление о том, как заставить его работать

012?
+0

Настройки.Secure.WIFI_ON определены только в API 17 (Jelly Bean), для более низких уровней API вы должны использовать System.Secure.WIFI_ON, однако, как указано в ответе, вы не можете писать безопасные настройки. –

ответ

1

Вы не можете изменять значения безопасной таблицы, если ваше приложение не поставляется в комплекте с системой (RTM):

настройки системы безопасности, содержащий системные настройки, что приложения могут читать , но не разрешается писать , Это касается предпочтений, которые пользователь должен явно изменять через системный интерфейс или специализированные API для этих значений, не изменяется непосредственно приложениями.

+0

Итак, мне нужно найти другой способ: / – user3167325