Distinction between settings

This commit is contained in:
2026-05-14 20:22:58 +02:00
parent 5417b4e739
commit 887e6de3e4
14 changed files with 126 additions and 31 deletions
@@ -260,17 +260,58 @@ public class Actions
ContentResolver cr = instance.getContentResolver();
//"String", "Long", "Int", "Float" };
String[] parts = parameter2.split(Action.actionParameter2Split);
// "String", "Long", "Int", "Float"
String[] parts = parameter2.split(Action.actionParameter2Split, -1);
if (parts[0].equalsIgnoreCase("String"))
result = android.provider.Settings.Global.putString(cr, parts[1], parts[2]);
else if (parts[0].equalsIgnoreCase("Long"))
result = android.provider.Settings.Global.putLong(cr, parts[1], Long.parseLong(parts[2]));
else if (parts[0].equalsIgnoreCase("Int"))
result = android.provider.Settings.Global.putInt(cr, parts[1], Integer.parseInt(parts[2]));
else if (parts[0].equalsIgnoreCase("Float"))
result = android.provider.Settings.Global.putFloat(cr, parts[1], Float.parseFloat(parts[2]));
if(parts.length == 3)
{
if (parts[0].equalsIgnoreCase("String"))
result = android.provider.Settings.Global.putString(cr, parts[1], parts[2]);
else if (parts[0].equalsIgnoreCase("Long"))
result = android.provider.Settings.Global.putLong(cr, parts[1], Long.parseLong(parts[2]));
else if (parts[0].equalsIgnoreCase("Int"))
result = android.provider.Settings.Global.putInt(cr, parts[1], Integer.parseInt(parts[2]));
else if (parts[0].equalsIgnoreCase("Float"))
result = android.provider.Settings.Global.putFloat(cr, parts[1], Float.parseFloat(parts[2]));
}
else
{
if(parts[0].equals(ActivityManageActionSetSystemSetting.targets[0]))
{
if (parts[1].equalsIgnoreCase("String"))
result = android.provider.Settings.Global.putString(cr, parts[2], parts[3]);
else if (parts[1].equalsIgnoreCase("Long"))
result = android.provider.Settings.Global.putLong(cr, parts[2], Long.parseLong(parts[3]));
else if (parts[1].equalsIgnoreCase("Int"))
result = android.provider.Settings.Global.putInt(cr, parts[2], Integer.parseInt(parts[3]));
else if (parts[1].equalsIgnoreCase("Float"))
result = android.provider.Settings.Global.putFloat(cr, parts[2], Float.parseFloat(parts[3]));
}
else if(parts[0].equals(ActivityManageActionSetSystemSetting.targets[1]))
{
if (parts[1].equalsIgnoreCase("String"))
result = android.provider.Settings.System.putString(cr, parts[2], parts[3]);
else if (parts[1].equalsIgnoreCase("Long"))
result = android.provider.Settings.System.putLong(cr, parts[2], Long.parseLong(parts[3]));
else if (parts[1].equalsIgnoreCase("Int"))
result = android.provider.Settings.System.putInt(cr, parts[2], Integer.parseInt(parts[3]));
else if (parts[1].equalsIgnoreCase("Float"))
result = android.provider.Settings.System.putFloat(cr, parts[2], Float.parseFloat(parts[3]));
}
else if(parts[0].equals(ActivityManageActionSetSystemSetting.targets[2]))
{
if (parts[1].equalsIgnoreCase("String"))
result = android.provider.Settings.Secure.putString(cr, parts[2], parts[3]);
else if (parts[1].equalsIgnoreCase("Long"))
result = android.provider.Settings.Secure.putLong(cr, parts[2], Long.parseLong(parts[3]));
else if (parts[1].equalsIgnoreCase("Int"))
result = android.provider.Settings.Secure.putInt(cr, parts[2], Integer.parseInt(parts[3]));
else if (parts[1].equalsIgnoreCase("Float"))
result = android.provider.Settings.Secure.putFloat(cr, parts[2], Float.parseFloat(parts[3]));
}
else
result = false;
}
Miscellaneous.logEvent("i", "Variable", "Result of system setting change: " + String.valueOf(result), 4);
@@ -18,12 +18,13 @@ import android.widget.Toast;
public class ActivityManageActionSetSystemSetting extends Activity
{
Spinner spinnerSettingDataType;
Spinner spinnerSettingTarget, spinnerSettingDataType;
EditText etSettingName, etSettingValue;
Button bSaveSetSystemSetting;
TextView tvSetSystemSettingExamples, tvSetSystemSettingNoticeWriteSecureSettings;
ArrayAdapter<String> settingDataTypeSpinnerAdapter;
ArrayAdapter<String> settingTargetSpinnerAdapter, settingDataTypeSpinnerAdapter;
protected final static String[] targets = { "Global", "System", "Secure" };
protected final static String[] dataTypes = { "String", "Long", "Int", "Float" };
@Override
@@ -34,6 +35,7 @@ public class ActivityManageActionSetSystemSetting extends Activity
Miscellaneous.setUiTheme(this);
this.setContentView(R.layout.activity_manage_action_set_system_setting);
spinnerSettingTarget = (Spinner) findViewById(R.id.spinnerSettingTarget);
spinnerSettingDataType = (Spinner) findViewById(R.id.spinnerSettingDataType);
etSettingName = (EditText)findViewById(R.id.etSettingName);
etSettingValue = (EditText)findViewById(R.id.etSettingValue);
@@ -41,6 +43,10 @@ public class ActivityManageActionSetSystemSetting extends Activity
tvSetSystemSettingExamples = (TextView)findViewById(R.id.tvSetSystemSettingExamples);
tvSetSystemSettingNoticeWriteSecureSettings = (TextView)findViewById(R.id.tvSetSystemSettingNoticeWriteSecureSettings);
settingTargetSpinnerAdapter = new ArrayAdapter<String>(this, R.layout.text_view_for_poi_listview_mediumtextsize, targets);
spinnerSettingTarget.setAdapter(settingTargetSpinnerAdapter);
settingTargetSpinnerAdapter.notifyDataSetChanged();
settingDataTypeSpinnerAdapter = new ArrayAdapter<String>(this, R.layout.text_view_for_poi_listview_mediumtextsize, dataTypes);
spinnerSettingDataType.setAdapter(settingDataTypeSpinnerAdapter);
settingDataTypeSpinnerAdapter.notifyDataSetChanged();
@@ -52,6 +58,9 @@ public class ActivityManageActionSetSystemSetting extends Activity
else
tvSetSystemSettingNoticeWriteSecureSettings.setVisibility(View.VISIBLE);
// Make links clickable
tvSetSystemSettingNoticeWriteSecureSettings.setMovementMethod(LinkMovementMethod.getInstance());
spinnerSettingDataType.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener()
{
@Override
@@ -115,7 +124,7 @@ public class ActivityManageActionSetSystemSetting extends Activity
Intent returnIntent = new Intent();
String param2Data = dataTypes[spinnerSettingDataType.getSelectedItemPosition()] + Action.actionParameter2Split + etSettingName.getText().toString() + Action.actionParameter2Split + etSettingValue.getText().toString();
String param2Data = targets[spinnerSettingTarget.getSelectedItemPosition()] + Action.actionParameter2Split + dataTypes[spinnerSettingDataType.getSelectedItemPosition()] + Action.actionParameter2Split + etSettingName.getText().toString() + Action.actionParameter2Split + etSettingValue.getText().toString();
returnIntent.putExtra(ActivityManageRule.intentNameActionParameter1, false);
returnIntent.putExtra(ActivityManageRule.intentNameActionParameter2, param2Data);
@@ -125,18 +134,34 @@ public class ActivityManageActionSetSystemSetting extends Activity
}
});
if(getIntent().hasExtra(ActivityManageRule.intentNameActionParameter2))
if(getIntent().hasExtra(ActivityManageRule.intentNameActionParameter2))
{
// dataType, setting name, setting value
String[] components = getIntent().getStringExtra(ActivityManageRule.intentNameActionParameter2).split(Action.actionParameter2Split);
String[] components = getIntent().getStringExtra(ActivityManageRule.intentNameActionParameter2).split(Action.actionParameter2Split, -1);
int position = Miscellaneous.arraySearchIndexOf(dataTypes, components[0], false, true);
if(position >= 0)
if(components.length == 4)
{
spinnerSettingDataType.setSelection(position);
etSettingName.setText(components[1]);
etSettingValue.setText(components[2]);
int positionTarget = Miscellaneous.arraySearchIndexOf(targets, components[0], false, true);
int positionDataType = Miscellaneous.arraySearchIndexOf(dataTypes, components[1], false, true);
if(positionDataType >= 0)
{
spinnerSettingTarget.setSelection(positionTarget);
spinnerSettingDataType.setSelection(positionDataType);
etSettingName.setText(components[2]);
etSettingValue.setText(components[3]);
}
}
else
{
int position = Miscellaneous.arraySearchIndexOf(dataTypes, components[0], false, true);
if (position >= 0)
{
spinnerSettingDataType.setSelection(position);
etSettingName.setText(components[1]);
etSettingValue.setText(components[2]);
}
}
}
}
@@ -798,7 +798,18 @@ public class ActivityPermissions extends Activity
break;
case setLocationService:
case setSystemSetting:
addToArrayListUnique(Manifest.permission.WRITE_SECURE_SETTINGS, requiredPermissions);
String[] parts = action.getParameter2().split(Action.actionParameter2Split, -1);
if(parts.length < 4)
addToArrayListUnique(Manifest.permission.WRITE_SECURE_SETTINGS, requiredPermissions);
else
{
if(parts[0].equals(ActivityManageActionSetSystemSetting.targets[0]))
addToArrayListUnique(Manifest.permission.WRITE_SECURE_SETTINGS, requiredPermissions);
else if(parts[0].equals(ActivityManageActionSetSystemSetting.targets[1]))
addToArrayListUnique(Manifest.permission.WRITE_SETTINGS, requiredPermissions);
else if(parts[0].equals(ActivityManageActionSetSystemSetting.targets[2]))
addToArrayListUnique(Manifest.permission.WRITE_SECURE_SETTINGS, requiredPermissions);
}
break;
case setScreenBrightness:
addToArrayListUnique(Manifest.permission.WRITE_SETTINGS, requiredPermissions);