From f756b2623fa76b9d0c3ca2ee9f2894856bb1e448 Mon Sep 17 00:00:00 2001 From: Oli Lan Date: Wed, 14 Jun 2023 11:26:32 +0100 Subject: Fix crash opening avatar picker in non-en-US locale. This fixes a crash seen when opening the avatar picker if the current language is not en-US. The crash occurs because content descriptions are provided in a sring array in an overlay, but the base empty array has been translated and is replacing the actual descriptions in non-default locales. This CL adds translatable=false to the base array, and adds a check to not crash if the content descriptions array is smaller than the images array. Bug: 284422901 Test: Manual, try opening avatar picker in various locales. Change-Id: I4a518cd37c4ca7139d182612cd02d79489948474 --- packages/SettingsLib/res/values/arrays.xml | 6 ++++-- .../src/com/android/settingslib/users/AvatarPickerActivity.java | 2 +- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/packages/SettingsLib/res/values/arrays.xml b/packages/SettingsLib/res/values/arrays.xml index 3e2b800d5a2c..3adb882bc1b1 100644 --- a/packages/SettingsLib/res/values/arrays.xml +++ b/packages/SettingsLib/res/values/arrays.xml @@ -643,8 +643,10 @@ array must also be populated with a content description for each image. --> - - + + diff --git a/packages/SettingsLib/src/com/android/settingslib/users/AvatarPickerActivity.java b/packages/SettingsLib/src/com/android/settingslib/users/AvatarPickerActivity.java index bcbd1caa45d3..848b177c821f 100644 --- a/packages/SettingsLib/src/com/android/settingslib/users/AvatarPickerActivity.java +++ b/packages/SettingsLib/src/com/android/settingslib/users/AvatarPickerActivity.java @@ -243,7 +243,7 @@ public class AvatarPickerActivity extends Activity { int index = indexFromPosition(position); viewHolder.setSelected(position == mSelectedPosition); viewHolder.setDrawable(mImageDrawables.get(index)); - if (mImageDescriptions != null) { + if (mImageDescriptions != null && index < mImageDescriptions.size()) { viewHolder.setContentDescription(mImageDescriptions.get(index)); } else { viewHolder.setContentDescription(getString( -- cgit v1.2.3-59-g8ed1b