From 1eedde0d0f1df0b169a77084fecb83524c13ad89 Mon Sep 17 00:00:00 2001 From: Peter_Liang Date: Wed, 3 Jun 2020 15:23:11 +0800 Subject: [PATCH] Shouldn't turn on other accessibility features in SuW. Root Cause: During the SuW, user could turn on other accessibility features except for Magnification, Select to Speak, and Talkback through edit shortcut menu list. Solution: Hide the edit shortcuts button if in the SuW period to avoid to turn on others. Bug: 158046037 Test: manual test Change-Id: I06e5fde2320c0736ecaf9feb912349c5965cb491 --- .../AccessibilityShortcutChooserActivity.java | 31 ++++++++++++------- .../util/AccessibilityUtils.java | 12 +++++++ 2 files changed, 32 insertions(+), 11 deletions(-) diff --git a/core/java/com/android/internal/accessibility/dialog/AccessibilityShortcutChooserActivity.java b/core/java/com/android/internal/accessibility/dialog/AccessibilityShortcutChooserActivity.java index 1b7517840650c..508deacb49d7a 100644 --- a/core/java/com/android/internal/accessibility/dialog/AccessibilityShortcutChooserActivity.java +++ b/core/java/com/android/internal/accessibility/dialog/AccessibilityShortcutChooserActivity.java @@ -23,6 +23,7 @@ import static com.android.internal.accessibility.common.ShortcutConstants.Shortc import static com.android.internal.accessibility.dialog.AccessibilityTargetHelper.createEnableDialogContentView; import static com.android.internal.accessibility.dialog.AccessibilityTargetHelper.getInstalledTargets; import static com.android.internal.accessibility.dialog.AccessibilityTargetHelper.getTargets; +import static com.android.internal.accessibility.util.AccessibilityUtils.isUserSetupCompleted; import android.annotation.Nullable; import android.app.Activity; @@ -61,18 +62,8 @@ public class AccessibilityShortcutChooserActivity extends Activity { } mTargets.addAll(getTargets(this, mShortcutType)); - - final String selectDialogTitle = - getString(R.string.accessibility_select_shortcut_menu_title); mTargetAdapter = new ShortcutTargetAdapter(mTargets); - mMenuDialog = new AlertDialog.Builder(this) - .setTitle(selectDialogTitle) - .setAdapter(mTargetAdapter, /* listener= */ null) - .setPositiveButton( - getString(R.string.edit_accessibility_shortcut_menu_button), - /* listener= */ null) - .setOnDismissListener(dialog -> finish()) - .create(); + mMenuDialog = createMenuDialog(); mMenuDialog.setOnShowListener(dialog -> updateDialogListeners()); mMenuDialog.show(); } @@ -154,4 +145,22 @@ public class AccessibilityShortcutChooserActivity extends Activity { mMenuDialog.getListView().setOnItemClickListener( isEditMenuMode ? this::onTargetChecked : this::onTargetSelected); } + + private AlertDialog createMenuDialog() { + final String dialogTitle = + getString(R.string.accessibility_select_shortcut_menu_title); + + final AlertDialog.Builder builder = new AlertDialog.Builder(this) + .setTitle(dialogTitle) + .setAdapter(mTargetAdapter, /* listener= */ null) + .setOnDismissListener(dialog -> finish()); + + if (isUserSetupCompleted(this)) { + final String positiveButtonText = + getString(R.string.edit_accessibility_shortcut_menu_button); + builder.setPositiveButton(positiveButtonText, /* listener= */ null); + } + + return builder.create(); + } } diff --git a/core/java/com/android/internal/accessibility/util/AccessibilityUtils.java b/core/java/com/android/internal/accessibility/util/AccessibilityUtils.java index 9ee0b0ea18910..4b4e20f9181b5 100644 --- a/core/java/com/android/internal/accessibility/util/AccessibilityUtils.java +++ b/core/java/com/android/internal/accessibility/util/AccessibilityUtils.java @@ -156,4 +156,16 @@ public final class AccessibilityUtils { return false; } + + /** + * Indicates whether the current user has completed setup via the setup wizard. + * {@link android.provider.Settings.Secure#USER_SETUP_COMPLETE} + * + * @return {@code true} if the setup is completed. + */ + public static boolean isUserSetupCompleted(Context context) { + return Settings.Secure.getIntForUser(context.getContentResolver(), + Settings.Secure.USER_SETUP_COMPLETE, /* def= */ 0, UserHandle.USER_CURRENT) + != /* false */ 0; + } }