diff --git a/res/values/strings.xml b/res/values/strings.xml
index 1b24912481e..be4f7918377 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -4806,7 +4806,7 @@
Interaction controls
- Downloaded services
+ Downloaded apps
Experimental
@@ -4912,7 +4912,7 @@
Touch feedback
- Use service
+ Use %1$s
Use color correction
@@ -5138,7 +5138,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 b28d8b5e541..4fe65073a86 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());
+ }
}