diff options
Diffstat (limited to 'src/com/android/settings/AccessibilitySettings.java')
-rw-r--r-- | src/com/android/settings/AccessibilitySettings.java | 62 |
1 files changed, 54 insertions, 8 deletions
diff --git a/src/com/android/settings/AccessibilitySettings.java b/src/com/android/settings/AccessibilitySettings.java index 321e956..104ee9e 100644 --- a/src/com/android/settings/AccessibilitySettings.java +++ b/src/com/android/settings/AccessibilitySettings.java @@ -56,6 +56,9 @@ public class AccessibilitySettings extends SettingsPreferenceFragment { private static final String ACCESSIBILITY_SERVICES_CATEGORY = "accessibility_services_category"; + private static final String TOGGLE_ACCESSIBILITY_SCRIPT_INJECTION_CHECKBOX = + "toggle_accessibility_script_injection_checkbox"; + private static final String POWER_BUTTON_CATEGORY = "power_button_category"; @@ -64,6 +67,8 @@ public class AccessibilitySettings extends SettingsPreferenceFragment { private CheckBoxPreference mToggleCheckBox; + private CheckBoxPreference mToggleScriptInjectionCheckBox; + private PreferenceCategory mPowerButtonCategory; private CheckBoxPreference mPowerButtonEndsCallCheckBox; @@ -81,18 +86,16 @@ public class AccessibilitySettings extends SettingsPreferenceFragment { addPreferencesFromResource(R.xml.accessibility_settings); mToggleCheckBox = (CheckBoxPreference) findPreference( - TOGGLE_ACCESSIBILITY_SERVICE_CHECKBOX); + TOGGLE_ACCESSIBILITY_SERVICE_CHECKBOX); + + mToggleScriptInjectionCheckBox = (CheckBoxPreference) findPreference( + TOGGLE_ACCESSIBILITY_SCRIPT_INJECTION_CHECKBOX); mPowerButtonCategory = (PreferenceCategory) findPreference(POWER_BUTTON_CATEGORY); mPowerButtonEndsCallCheckBox = (CheckBoxPreference) findPreference( - POWER_BUTTON_ENDS_CALL_CHECKBOX); + POWER_BUTTON_ENDS_CALL_CHECKBOX); addAccessibilitServicePreferences(); - } - - @Override - public void onResume() { - super.onResume(); final HashSet<String> enabled = new HashSet<String>(); String settingValue = Settings.Secure.getString(getContentResolver(), @@ -136,6 +139,12 @@ public class AccessibilitySettings extends SettingsPreferenceFragment { displayNoAppsAlert(); } + // set the accessibility script injection category + boolean scriptInjectionEnabled = (Settings.Secure.getInt(getContentResolver(), + Settings.Secure.ACCESSIBILITY_SCRIPT_INJECTION, 0) == 1); + mToggleScriptInjectionCheckBox.setChecked(scriptInjectionEnabled); + mToggleScriptInjectionCheckBox.setEnabled(true); + if (KeyCharacterMap.deviceHasKey(KeyEvent.KEYCODE_POWER) && Utils.isVoiceCapable(getActivity())) { int incallPowerBehavior = Settings.Secure.getInt(getContentResolver(), @@ -185,7 +194,6 @@ public class AccessibilitySettings extends SettingsPreferenceFragment { final String key = preference.getKey(); if (TOGGLE_ACCESSIBILITY_SERVICE_CHECKBOX.equals(key)) { - boolean isChecked = ((CheckBoxPreference) preference).isChecked(); handleEnableAccessibilityStateChange((CheckBoxPreference) preference); } else if (POWER_BUTTON_ENDS_CALL_CHECKBOX.equals(key)) { boolean isChecked = ((CheckBoxPreference) preference).isChecked(); @@ -196,6 +204,8 @@ public class AccessibilitySettings extends SettingsPreferenceFragment { Settings.Secure.INCALL_POWER_BUTTON_BEHAVIOR, (isChecked ? Settings.Secure.INCALL_POWER_BUTTON_BEHAVIOR_HANGUP : Settings.Secure.INCALL_POWER_BUTTON_BEHAVIOR_SCREEN_OFF)); + } else if (TOGGLE_ACCESSIBILITY_SCRIPT_INJECTION_CHECKBOX.equals(key)) { + handleToggleAccessibilityScriptInjection((CheckBoxPreference) preference); } else if (preference instanceof CheckBoxPreference) { handleEnableAccessibilityServiceStateChange((CheckBoxPreference) preference); } @@ -242,6 +252,42 @@ public class AccessibilitySettings extends SettingsPreferenceFragment { } /** + * Handles the change of the accessibility script injection setting state. + * + * @param preference The preference for enabling/disabling accessibility script injection. + */ + private void handleToggleAccessibilityScriptInjection(CheckBoxPreference preference) { + if (preference.isChecked()) { + final CheckBoxPreference checkBoxPreference = preference; + // TODO: DialogFragment? + AlertDialog dialog = (new AlertDialog.Builder(getActivity())) + .setTitle(android.R.string.dialog_alert_title) + .setIcon(android.R.drawable.ic_dialog_alert) + .setMessage(getActivity().getString( + R.string.accessibility_script_injection_security_warning)) + .setCancelable(true) + .setPositiveButton(android.R.string.ok, + new DialogInterface.OnClickListener() { + public void onClick(DialogInterface dialog, int which) { + Settings.Secure.putInt(getContentResolver(), + Settings.Secure.ACCESSIBILITY_SCRIPT_INJECTION, 1); + } + }) + .setNegativeButton(android.R.string.cancel, + new DialogInterface.OnClickListener() { + public void onClick(DialogInterface dialog, int which) { + checkBoxPreference.setChecked(false); + } + }) + .create(); + dialog.show(); + } else { + Settings.Secure.putInt(getContentResolver(), + Settings.Secure.ACCESSIBILITY_SCRIPT_INJECTION, 0); + } + } + + /** * Handles the change of the preference for enabling/disabling an AccessibilityService. * * @param preference The preference. |