diff --git a/res/values/strings.xml b/res/values/strings.xml index 94ba433ce20..1bc48c0af24 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -4815,7 +4815,7 @@ Interaction controls - Downloaded services + Downloaded apps Experimental @@ -4921,7 +4921,7 @@ Touch feedback - Use service + Use %1$s Use color correction @@ -5147,7 +5147,7 @@ - View and platform actions + View and perform actions It can track your interactions diff --git a/src/com/android/settings/accessibility/ToggleAccessibilityServicePreferenceFragment.java b/src/com/android/settings/accessibility/ToggleAccessibilityServicePreferenceFragment.java index d1adf3c6023..f3f2af2129b 100644 --- a/src/com/android/settings/accessibility/ToggleAccessibilityServicePreferenceFragment.java +++ b/src/com/android/settings/accessibility/ToggleAccessibilityServicePreferenceFragment.java @@ -85,6 +85,16 @@ public class ToggleAccessibilityServicePreferenceFragment mLockPatternUtils = new LockPatternUtils(getActivity()); } + @Override + public void onViewCreated(View view, Bundle savedInstanceState) { + super.onViewCreated(view, savedInstanceState); + mSwitchBar.setLabelDelegate((boolean isChecked) -> { + final AccessibilityServiceInfo info = getAccessibilityServiceInfo(); + return getString(R.string.accessibility_service_master_switch_title, + info.getResolveInfo().loadLabel(getPackageManager())); + }); + } + @Override public void onResume() { mSettingsContentObserver.register(getContentResolver()); @@ -120,7 +130,7 @@ public class ToggleAccessibilityServicePreferenceFragment return serviceInfo; } } - return null; + throw new IllegalStateException("ServiceInfo is not found."); } @Override @@ -128,18 +138,12 @@ public class ToggleAccessibilityServicePreferenceFragment switch (dialogId) { case DIALOG_ID_ENABLE_WARNING: { final AccessibilityServiceInfo info = getAccessibilityServiceInfo(); - if (info == null) { - return null; - } mDialog = AccessibilityServiceWarning .createCapabilitiesDialog(getActivity(), info, this); break; } case DIALOG_ID_DISABLE_WARNING: { AccessibilityServiceInfo info = getAccessibilityServiceInfo(); - if (info == null) { - return null; - } mDialog = AccessibilityServiceWarning .createDisableDialog(getActivity(), info, this); break; diff --git a/src/com/android/settings/widget/SwitchBar.java b/src/com/android/settings/widget/SwitchBar.java index f8743d1fa47..33413040e82 100644 --- a/src/com/android/settings/widget/SwitchBar.java +++ b/src/com/android/settings/widget/SwitchBar.java @@ -61,6 +61,16 @@ public class SwitchBar extends LinearLayout implements CompoundButton.OnCheckedC void onSwitchChanged(Switch switchView, boolean isChecked); } + public interface LabelDelegate { + /** + * Called to create label and set the title with Accessibility + * service name to the textView of switchBar. + * + * @param isChecked The checked state of switchView. + */ + String createLabel(boolean isChecked); + } + private static final int[] XML_ATTRIBUTES = { R.attr.switchBarMarginStart, R.attr.switchBarMarginEnd, @@ -90,6 +100,7 @@ public class SwitchBar extends LinearLayout implements CompoundButton.OnCheckedC private boolean mDisabledByAdmin; private EnforcedAdmin mEnforcedAdmin = null; private String mMetricsTag; + private LabelDelegate mLabelDelegate; public SwitchBar(Context context) { @@ -178,7 +189,11 @@ public class SwitchBar extends LinearLayout implements CompoundButton.OnCheckedC } public void setTextViewLabelAndBackground(boolean isChecked) { - mLabel = getResources().getString(isChecked ? mOnTextId : mOffTextId); + if(mLabelDelegate != null) { + mLabel = mLabelDelegate.createLabel(isChecked); + } else { + mLabel = getResources().getString(isChecked ? mOnTextId : mOffTextId); + } setBackgroundColor(isChecked ? mBackgroundActivatedColor : mBackgroundColor); updateText(); } @@ -383,4 +398,9 @@ public class SwitchBar extends LinearLayout implements CompoundButton.OnCheckedC requestLayout(); } + + public void setLabelDelegate(LabelDelegate labelDelegate) { + mLabelDelegate = labelDelegate; + setTextViewLabelAndBackground(isChecked()); + } }