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
This commit is contained in:
lbill
2025-02-27 04:00:32 +00:00
parent 35e725d4eb
commit d334ebb556
3 changed files with 23 additions and 14 deletions

View File

@@ -13903,6 +13903,9 @@
<!-- Content description for setting password complete-->
<string name="accessibility_setup_password_complete">Password is now set up</string>
<!-- Content description for setting PIN complete-->
<string name="accessibility_setup_pin_complete">PIN is now set up</string>
<!-- Authority of the content provider that support methods restartPhoneProcess and restartRild. Will be overlaid by OEM.-->
<string name="reset_telephony_stack_content_provider_authority" translatable="false"></string>

View File

@@ -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();
}

View File

@@ -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(
final String desc = getResources().getString(
stage.headerMessage,
LockPatternUtils.MIN_LOCK_PATTERN_SIZE));
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();
}