Merge "Use a configurable default if the setting has never been set."

This commit is contained in:
Menghan Li
2020-02-16 00:38:50 +00:00
committed by Android (Google) Code Review

View File

@@ -27,6 +27,8 @@ import android.content.pm.ResolveInfo;
import android.graphics.drawable.Drawable; import android.graphics.drawable.Drawable;
import android.net.Uri; import android.net.Uri;
import android.os.Bundle; import android.os.Bundle;
import android.os.UserHandle;
import android.provider.Settings;
import android.text.Html; import android.text.Html;
import android.text.TextUtils; import android.text.TextUtils;
import android.view.LayoutInflater; import android.view.LayoutInflater;
@@ -47,6 +49,7 @@ import com.android.settings.SettingsActivity;
import com.android.settings.SettingsPreferenceFragment; import com.android.settings.SettingsPreferenceFragment;
import com.android.settings.accessibility.AccessibilityUtil.UserShortcutType; import com.android.settings.accessibility.AccessibilityUtil.UserShortcutType;
import com.android.settings.widget.SwitchBar; import com.android.settings.widget.SwitchBar;
import com.android.settingslib.accessibility.AccessibilityUtils;
import com.android.settingslib.widget.FooterPreference; import com.android.settingslib.widget.FooterPreference;
import java.lang.annotation.Retention; import java.lang.annotation.Retention;
@@ -112,6 +115,7 @@ public abstract class ToggleFeaturePreferenceFragment extends SettingsPreference
@Override @Override
public void onCreate(Bundle savedInstanceState) { public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
setupDefaultShortcutIfNecessary(getPrefContext());
final int resId = getPreferenceScreenResId(); final int resId = getPreferenceScreenResId();
if (resId <= 0) { if (resId <= 0) {
PreferenceScreen preferenceScreen = getPreferenceManager().createPreferenceScreen( PreferenceScreen preferenceScreen = getPreferenceManager().createPreferenceScreen(
@@ -642,4 +646,32 @@ public abstract class ToggleFeaturePreferenceFragment extends SettingsPreference
preferenceScreen.addPreference(new FooterPreference.Builder(getActivity()).setTitle( preferenceScreen.addPreference(new FooterPreference.Builder(getActivity()).setTitle(
title).build()); 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());
}
}
} }