Loading src/com/android/settings/accessibility/ToggleFeaturePreferenceFragment.java +32 −0 Original line number Diff line number Diff line Loading @@ -27,6 +27,8 @@ import android.content.pm.ResolveInfo; 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; Loading @@ -47,6 +49,7 @@ import com.android.settings.SettingsActivity; 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; Loading Loading @@ -112,6 +115,7 @@ public abstract class ToggleFeaturePreferenceFragment extends SettingsPreference @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setupDefaultShortcutIfNecessary(getPrefContext()); final int resId = getPreferenceScreenResId(); if (resId <= 0) { PreferenceScreen preferenceScreen = getPreferenceManager().createPreferenceScreen( Loading Loading @@ -642,4 +646,32 @@ public abstract class ToggleFeaturePreferenceFragment extends SettingsPreference 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()); } } } Loading
src/com/android/settings/accessibility/ToggleFeaturePreferenceFragment.java +32 −0 Original line number Diff line number Diff line Loading @@ -27,6 +27,8 @@ import android.content.pm.ResolveInfo; 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; Loading @@ -47,6 +49,7 @@ import com.android.settings.SettingsActivity; 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; Loading Loading @@ -112,6 +115,7 @@ public abstract class ToggleFeaturePreferenceFragment extends SettingsPreference @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setupDefaultShortcutIfNecessary(getPrefContext()); final int resId = getPreferenceScreenResId(); if (resId <= 0) { PreferenceScreen preferenceScreen = getPreferenceManager().createPreferenceScreen( Loading Loading @@ -642,4 +646,32 @@ public abstract class ToggleFeaturePreferenceFragment extends SettingsPreference 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()); } } }