Androidのシステム設定をアプリから変更する方法

自作のアプリケーションからもAndroidのシステム全体の設定を変更する事ができます。
もちろんリファレンスに記載されている範囲で、ですけど。

変更できる内容をリファレンスで確認します。
 -> Settings.System このあたりです


今回は、Galaxy Sの2.2.1以降で消えてしまった「スリープを無効にする(Stay awake)」という設定項目を変更するサンプルコードを載せます。
他の設定も同じ要領で変更可能だと思います。

パーミッションが必要になります。ご注意を。
 android.permission.WRITE_SETTINGS

	/**
	 * 設定を変更する
	 * @param stay
	 */
	private void changeStayAwakeSetting(boolean stay){
		ContentResolver contentresolver = getContentResolver();
		String setting_name = System.STAY_ON_WHILE_PLUGGED_IN;
		byte value = 0;
		if(stay){
			value = BatteryManager.BATTERY_PLUGGED_AC | BatteryManager.BATTERY_PLUGGED_USB;
		}else{
			value = 0;
		}
		android.provider.Settings.System.putInt(contentresolver, setting_name, value);
	}


	/**
	 * 設定を取得する
	 * @return
	 */
	private boolean getStayAwakeSetting(){
		boolean ret = false;
		ContentResolver contentresolver = getContentResolver();
		String setting_name = System.STAY_ON_WHILE_PLUGGED_IN;
		int value = 0;
		
		try {
			value = android.provider.Settings.System.getInt(contentresolver, setting_name);
		} catch (SettingNotFoundException e) {
			e.printStackTrace();
		}
		
		if(value > 0){
			ret = true;
		}
		return ret;
	}