Merge "Use a configurable default if the setting has never been set."
diff --git a/src/com/android/settings/accessibility/ToggleFeaturePreferenceFragment.java b/src/com/android/settings/accessibility/ToggleFeaturePreferenceFragment.java
index 28e7094..19a0f2b 100644
--- a/src/com/android/settings/accessibility/ToggleFeaturePreferenceFragment.java
+++ b/src/com/android/settings/accessibility/ToggleFeaturePreferenceFragment.java
@@ -27,6 +27,8 @@
import android.graphics.drawable.Drawable;
import android.net.Uri;
import android.os.Bundle;
+import android.os.UserHandle;
+import android.provider.Settings;
import android.text.Html;
import android.text.TextUtils;
import android.view.LayoutInflater;
@@ -47,6 +49,7 @@
import com.android.settings.SettingsPreferenceFragment;
import com.android.settings.accessibility.AccessibilityUtil.UserShortcutType;
import com.android.settings.widget.SwitchBar;
+import com.android.settingslib.accessibility.AccessibilityUtils;
import com.android.settingslib.widget.FooterPreference;
import java.lang.annotation.Retention;
@@ -112,6 +115,7 @@
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
+ setupDefaultShortcutIfNecessary(getPrefContext());
final int resId = getPreferenceScreenResId();
if (resId <= 0) {
PreferenceScreen preferenceScreen = getPreferenceManager().createPreferenceScreen(
@@ -642,4 +646,32 @@
preferenceScreen.addPreference(new FooterPreference.Builder(getActivity()).setTitle(
title).build());
}
+
+ /**
+ * Setups a configurable default if the setting has never been set.
+ */
+ private static void setupDefaultShortcutIfNecessary(Context context) {
+ final String targetKey = Settings.Secure.ACCESSIBILITY_SHORTCUT_TARGET_SERVICE;
+ String targetString = Settings.Secure.getString(context.getContentResolver(), targetKey);
+ if (!TextUtils.isEmpty(targetString)) {
+ // The shortcut setting has been set
+ return;
+ }
+
+ // AccessibilityManager#getAccessibilityShortcutTargets may not return correct shortcut
+ // targets during boot. Needs to read settings directly here.
+ targetString = AccessibilityUtils.getShortcutTargetServiceComponentNameString(context,
+ UserHandle.myUserId());
+ if (TextUtils.isEmpty(targetString)) {
+ // No configurable default accessibility service
+ return;
+ }
+
+ // Only fallback to default accessibility service when setting is never updated.
+ final ComponentName shortcutName = ComponentName.unflattenFromString(targetString);
+ if (shortcutName != null) {
+ Settings.Secure.putString(context.getContentResolver(), targetKey,
+ shortcutName.flattenToString());
+ }
+ }
}