From 5469cffa5823e71d496060a98151796035e13227 Mon Sep 17 00:00:00 2001 From: jasonwshsu Date: Thu, 9 Jan 2020 21:21:25 +0800 Subject: [PATCH] Accessibility shortcut secondary action - Invisible type fragment need to handle AccessibilityServiceState - InvisibleToggleAccessibilityServicePreferenceFragment need to set AccessibilityServiceState according to ShortcutPreference checkbox's stauts. Bug: 142530063 Test: manual Change-Id: I9ff21b66ebf72a51e62a958e3e391624c7925c27 --- ...ccessibilityServicePreferenceFragment.java | 31 ++++++++++++++++++- ...ccessibilityServicePreferenceFragment.java | 2 +- 2 files changed, 31 insertions(+), 2 deletions(-) diff --git a/src/com/android/settings/accessibility/InvisibleToggleAccessibilityServicePreferenceFragment.java b/src/com/android/settings/accessibility/InvisibleToggleAccessibilityServicePreferenceFragment.java index ef658e0a96c..afcd4c66194 100644 --- a/src/com/android/settings/accessibility/InvisibleToggleAccessibilityServicePreferenceFragment.java +++ b/src/com/android/settings/accessibility/InvisibleToggleAccessibilityServicePreferenceFragment.java @@ -18,9 +18,12 @@ package com.android.settings.accessibility; import android.accessibilityservice.AccessibilityServiceInfo; import android.os.Bundle; +import android.view.View; +import com.android.settings.R; import com.android.settings.SettingsActivity; import com.android.settings.widget.SwitchBar; +import com.android.settingslib.accessibility.AccessibilityUtils; /** * For accessibility services that target SDK > Q, and @@ -28,7 +31,7 @@ import com.android.settings.widget.SwitchBar; * is set. */ public class InvisibleToggleAccessibilityServicePreferenceFragment extends - ToggleAccessibilityServicePreferenceFragment { + ToggleAccessibilityServicePreferenceFragment implements ShortcutPreference.OnClickListener{ @Override public void onActivityCreated(Bundle savedInstanceState) { @@ -38,4 +41,30 @@ public class InvisibleToggleAccessibilityServicePreferenceFragment extends final SwitchBar mSwitchBar = activity.getSwitchBar(); mSwitchBar.hide(); } + + /** + * {@inheritDoc} + * + * Enables accessibility service only when user had allowed permission. + */ + @Override + public void onCheckboxClicked(ShortcutPreference preference) { + super.onCheckboxClicked(preference); + AccessibilityUtils.setAccessibilityServiceState(getContext(), mComponentName, + getArguments().getBoolean(AccessibilitySettings.EXTRA_CHECKED)); + } + + /** + * {@inheritDoc} + * + * Enables accessibility service when user clicks permission allow button. + */ + @Override + void onDialogButtonFromShortcutClicked(View view) { + super.onDialogButtonFromShortcutClicked(view); + if (view.getId() == R.id.permission_enable_allow_button) { + AccessibilityUtils.setAccessibilityServiceState(getContext(), mComponentName, + true); + } + } } diff --git a/src/com/android/settings/accessibility/ToggleAccessibilityServicePreferenceFragment.java b/src/com/android/settings/accessibility/ToggleAccessibilityServicePreferenceFragment.java index bb2483300fd..ad316526e47 100644 --- a/src/com/android/settings/accessibility/ToggleAccessibilityServicePreferenceFragment.java +++ b/src/com/android/settings/accessibility/ToggleAccessibilityServicePreferenceFragment.java @@ -558,7 +558,7 @@ public class ToggleAccessibilityServicePreferenceFragment extends mDialog.dismiss(); } - private void onDialogButtonFromShortcutClicked(View view) { + void onDialogButtonFromShortcutClicked(View view) { if (view.getId() == R.id.permission_enable_allow_button) { onAllowButtonFromShortcutClicked(); } else if (view.getId() == R.id.permission_enable_deny_button) {