From d334ebb556bb84402f08d99640216794ad856156 Mon Sep 17 00:00:00 2001 From: lbill Date: Thu, 27 Feb 2025 04:00:32 +0000 Subject: [PATCH] Fix disruptive announcement on PIN/Password set up - Do not invoke deprecated announceForAccessibility() - Define corresponding content description for PIN & Password Flag: EXEMPT for a11y bug fixinig Bug: 384607370 Test: Enabled Talkback, Setup Screen Lock PIN/Password, ensure the "Password is now set up" for set up password, and the "PIN is now set up" announced without disruptive announcement Change-Id: I97c2c7fd8824468fccca8526c4e61ce642fd62ac --- res/values/strings.xml | 3 +++ .../settings/password/ChooseLockPassword.java | 20 ++++++++++++++----- .../settings/password/ChooseLockPattern.java | 14 +++++-------- 3 files changed, 23 insertions(+), 14 deletions(-) diff --git a/res/values/strings.xml b/res/values/strings.xml index c22ce6ce790..a95f4a67d59 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -13903,6 +13903,9 @@ Password is now set up + + PIN is now set up + diff --git a/src/com/android/settings/password/ChooseLockPassword.java b/src/com/android/settings/password/ChooseLockPassword.java index 7892ac47ffa..12b0a0d9817 100644 --- a/src/com/android/settings/password/ChooseLockPassword.java +++ b/src/com/android/settings/password/ChooseLockPassword.java @@ -25,6 +25,7 @@ import static android.app.admin.DevicePolicyResources.Strings.Settings.REENTER_W import static android.app.admin.DevicePolicyResources.Strings.Settings.SET_WORK_PROFILE_PASSWORD_HEADER; import static android.app.admin.DevicePolicyResources.Strings.Settings.SET_WORK_PROFILE_PIN_HEADER; import static android.app.admin.DevicePolicyResources.UNDEFINED; +import static android.view.View.ACCESSIBILITY_LIVE_REGION_ASSERTIVE; import static android.view.View.ACCESSIBILITY_LIVE_REGION_POLITE; import static com.android.internal.widget.LockPatternUtils.CREDENTIAL_TYPE_NONE; @@ -70,6 +71,7 @@ import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.view.WindowManager; +import android.view.accessibility.AccessibilityManager; import android.view.inputmethod.EditorInfo; import android.widget.CheckBox; import android.widget.ImeAwareEditText; @@ -1126,6 +1128,19 @@ public class ChooseLockPassword extends SettingsActivity { mPasswordEntry.setText(""); + final AccessibilityManager accessibilityManager = + (AccessibilityManager) getActivity().getSystemService( + Context.ACCESSIBILITY_SERVICE); + + if (accessibilityManager.isEnabled()) { + if (mPasswordEntry != null) { + mPasswordEntry.setAccessibilityLiveRegion(ACCESSIBILITY_LIVE_REGION_ASSERTIVE); + mPasswordEntry.setStateDescription( + mIsAlphaMode ? getString(R.string.accessibility_setup_password_complete) + : getString(R.string.accessibility_setup_pin_complete)); + } + } + if (!wasSecureBefore) { Intent intent = getRedactionInterstitialIntent(getActivity()); if (intent != null) { @@ -1133,11 +1148,6 @@ public class ChooseLockPassword extends SettingsActivity { } } - if (mLayout != null) { - mLayout.announceForAccessibility( - getString(R.string.accessibility_setup_password_complete)); - } - getActivity().finish(); } diff --git a/src/com/android/settings/password/ChooseLockPattern.java b/src/com/android/settings/password/ChooseLockPattern.java index a30c38b20b8..6207aa9feec 100644 --- a/src/com/android/settings/password/ChooseLockPattern.java +++ b/src/com/android/settings/password/ChooseLockPattern.java @@ -743,10 +743,11 @@ public class ChooseLockPattern extends SettingsActivity { // header text, footer text, visibility and // enabled state all known from the stage if (stage == Stage.ChoiceTooShort) { - layout.setDescriptionText( - getResources().getString( - stage.headerMessage, - LockPatternUtils.MIN_LOCK_PATTERN_SIZE)); + final String desc = getResources().getString( + stage.headerMessage, + LockPatternUtils.MIN_LOCK_PATTERN_SIZE); + layout.setDescriptionText(desc); + layout.setContentDescription(desc); } else { layout.setDescriptionText(stage.headerMessage); } @@ -887,11 +888,6 @@ public class ChooseLockPattern extends SettingsActivity { } } - if (mSudContent != null) { - mSudContent.announceForAccessibility( - getString(R.string.accessibility_setup_password_complete)); - } - getActivity().finish(); }