diff --git a/res/values/strings.xml b/res/values/strings.xml
index bddba381f2f..36886e68b14 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -36,10 +36,10 @@
Tap to show info
-
- - You are now %1$d step away from being a developer.
- - You are now %1$d steps away from being a developer.
-
+ {count, plural,
+ =1 {You are now # step away from being a developer.}
+ other {You are now # steps away from being a developer.}
+ }
You are now a developer!
@@ -355,10 +355,10 @@
Only apps that support language selection are shown here.
-
- - Remove selected language?
- - Remove selected languages?
-
+ {count, plural,
+ =1 {Remove selected language?}
+ other {Remove selected languages?}
+ }
Text will be displayed in another language.
@@ -1128,10 +1128,10 @@
If you enter an incorrect password on the next attempt, your work profile and its data will be deleted
-
- - Must contain at least %d character
- - Must be at least %d characters
-
+ {count, plural,
+ =1 {Must contain at least # character}
+ other {Must be at least # characters}
+ }
{count, plural,
@@ -1140,21 +1140,21 @@
}
-
- - PIN must contain at least %d digit
- - PIN must be at least %d digits
-
+ {count, plural,
+ =1 {PIN must contain at least # digit}
+ other {PIN must be at least # digits}
+ }
-
- - Must be fewer than %d character
- - Must be fewer than %d characters
-
+ {count, plural,
+ =1 {Must be fewer than # character}
+ other {Must be fewer than # characters}
+ }
-
- - Must be fewer than %d digit
- - Must be fewer than %d digits
-
+ {count, plural,
+ =1 {Must be fewer than # digit}
+ other {Must be fewer than # digits}
+ }
Device admin doesn\'t allow using a recent PIN
@@ -1163,46 +1163,46 @@
This can\'t include an invalid character
-
- - Must contain at least 1 letter
- - Must contain at least %d letters
-
+ {count, plural,
+ =1 {Must contain at least 1 letter}
+ other {Must contain at least # letters}
+ }
-
- - Must contain at least 1 lowercase letter
- - Must contain at least %d lowercase letters
-
+ {count, plural,
+ =1 {Must contain at least 1 lowercase letter}
+ other {Must contain at least # lowercase letters}
+ }
-
- - Must contain at least 1 uppercase letter
- - Must contain at least %d uppercase letters
-
+ {count, plural,
+ =1 {Must contain at least 1 uppercase letter}
+ other {Must contain at least # uppercase letters}
+ }
-
- - Must contain at least 1 numerical digit
- - Must contain at least %d numerical digits
-
+ {count, plural,
+ =1 {Must contain at least 1 numerical digit}
+ other {Must contain at least # numerical digits}
+ }
-
- - Must contain at least 1 special symbol
- - Must contain at least %d special symbols
-
+ {count, plural,
+ =1 {Must contain at least 1 special symbol}
+ other {Must contain at least # special symbols}
+ }
-
- - Must contain at least 1 non-letter character
- - Must contain at least %d non-letter characters
-
+ {count, plural,
+ =1 {Must contain at least 1 non-letter character}
+ other {Must contain at least # non-letter characters}
+ }
-
- - Must contain at least 1 non-numerical character
- - Must contain at least %d non-numerical characters
-
+ {count, plural,
+ =1 {Must contain at least 1 non-numerical character}
+ other {Must contain at least # non-numerical characters}
+ }
Device admin doesn\'t allow using a recent
@@ -1234,10 +1234,10 @@
No active apps
-
- - %d active app
- - %d active apps
-
+ {count, plural,
+ =1 {# active app}
+ other {# active apps}
+ }
Trust agents
@@ -1249,10 +1249,10 @@
None
-
- - 1 active trust agent
- - %d active trust agents
-
+ {count, plural,
+ =1 {1 active trust agent}
+ other {# active trust agents}
+ }
@@ -1751,20 +1751,20 @@
-
- - 1 network
- - %d networks
-
+ {count, plural,
+ =1 {1 network}
+ other {# networks}
+ }
-
- - 1 subscription
- - %d subscriptions
-
+ {count, plural,
+ =1 {1 subscription}
+ other {# subscriptions}
+ }
-
- - 1 network & subscription
- - %d networks & subscriptions
-
+ {count, plural,
+ =1 {1 network & subscription}
+ other {# networks & subscriptions}
+ }
SSID
@@ -2372,10 +2372,10 @@
Displayed in a dialog box. [CHAR LIMIT=100] -->
Incorrect SIM PIN code you must now contact your carrier to unlock your device.
-
- - Incorrect SIM PIN code, you have %d remaining attempt before you must contact your carrier to unlock your device.
- - Incorrect SIM PIN code, you have %d remaining attempts.
-
+ {count, plural,
+ =1 {Incorrect SIM PIN code, you have # remaining attempt before you must contact your carrier to unlock your device.}
+ other {Incorrect SIM PIN code, you have # remaining attempts.}
+ }
@@ -2951,18 +2951,10 @@
"total_location_app_count" is almost always greater than 1, so "apps" is always in plural form.
[CHAR LIMIT=NONE]-->
-
- -
- %1$d
- of
- %2$d
- apps has access to location
- -
- %1$d
- of
- %2$d
- apps have access to location
-
+ {count, plural,
+ =1 {# of {total} apps has access to location}
+ other {# of {total} apps have access to location}
+ }
Recent access
@@ -3319,10 +3311,10 @@
Recently opened apps
-
- - See all apps
- - See all %1$d apps
-
+ {count, plural,
+ =1 {See all apps}
+ other {See all # apps}
+ }
Contact your IT admin
@@ -3352,10 +3344,10 @@
Cache
-
- - 1 item
- - %d items
-
+ {count, plural,
+ =1 {1 item}
+ other {# items}
+ }
Clear access
@@ -9629,10 +9621,10 @@
Number of apps is estimated. It may not include apps installed outside of the Play Store.
-
- - Minimum %d app
- - Minimum %d apps
-
+ {count, plural,
+ =1 {Minimum # app}
+ other {Minimum # apps}
+ }
Location permissions
@@ -9642,10 +9634,10 @@
Default apps
-
- - %d app
- - %d apps
-
+ {count, plural,
+ =1 {# app}
+ other {# apps}
+ }
Default keyboard
@@ -9665,10 +9657,10 @@
Trusted credentials in your work profile
-
- - Minimum %d CA certificate
- - Minimum %d CA certificates
-
+ {count, plural,
+ =1 {Minimum # CA certificate}
+ other {Minimum # CA certificates}
+ }
Admin can lock the device and reset password
@@ -9678,10 +9670,10 @@
Failed password attempts before deleting work profile data
-
- - %d attempt
- - %d attempts
-
+ {count, plural,
+ =1 {# attempt}
+ other {# attempts}
+ }
This device is managed by your organization.
@@ -9742,26 +9734,26 @@
-
- - Camera app
- - Camera apps
-
+ {count, plural,
+ =1 {Camera app}
+ other {Camera apps}
+ }
Calendar app
Contacts app
-
- - Email client app
- - Email client apps
-
+ {count, plural,
+ =1 {Email client app}
+ other {Email client apps}
+ }
Map app
-
- - Phone app
- - Phone apps
-
+ {count, plural,
+ =1 {Phone app}
+ other {Phone apps}
+ }
%1$s, %2$s
@@ -9844,10 +9836,10 @@
Password and identity services
-
- - %1$d password
- - %1$d passwords
-
+ {count, plural,
+ =1 {# password}
+ other {# passwords}
+ }
\u2014
@@ -10625,10 +10617,10 @@
Accessibility usage
-
- - 1 app has full access to your device
- - %1$d apps have full access to your device
-
+ {count, plural,
+ =1 {1 app has full access to your device}
+ other {# apps have full access to your device}
+ }
Important information
diff --git a/src/com/android/settings/IccLockSettings.java b/src/com/android/settings/IccLockSettings.java
index c206cc69448..0ebe8c77af7 100644
--- a/src/com/android/settings/IccLockSettings.java
+++ b/src/com/android/settings/IccLockSettings.java
@@ -57,6 +57,7 @@ import androidx.preference.SwitchPreference;
import com.android.settings.network.ProxySubscriptionManager;
import com.android.settings.network.SubscriptionUtil;
+import com.android.settingslib.utils.StringUtil;
import java.util.ArrayList;
import java.util.List;
@@ -674,9 +675,8 @@ public class IccLockSettings extends SettingsPreferenceFragment
} else if (attemptsRemaining == 1) {
displayMessage = mRes.getString(R.string.wrong_pin_code_one, attemptsRemaining);
} else if (attemptsRemaining > 1) {
- displayMessage = mRes
- .getQuantityString(R.plurals.wrong_pin_code, attemptsRemaining,
- attemptsRemaining);
+ displayMessage = StringUtil.getIcuPluralsString(getPrefContext(), attemptsRemaining,
+ R.string.wrong_pin_code);
} else {
displayMessage = mRes.getString(R.string.pin_failed);
}
diff --git a/src/com/android/settings/applications/AppStorageSettings.java b/src/com/android/settings/applications/AppStorageSettings.java
index 5a1d11b405d..807f0432990 100644
--- a/src/com/android/settings/applications/AppStorageSettings.java
+++ b/src/com/android/settings/applications/AppStorageSettings.java
@@ -58,6 +58,7 @@ import com.android.settingslib.applications.AppUtils;
import com.android.settingslib.applications.ApplicationsState.Callbacks;
import com.android.settingslib.applications.StorageStatsSource;
import com.android.settingslib.applications.StorageStatsSource.AppStorageStats;
+import com.android.settingslib.utils.StringUtil;
import com.android.settingslib.widget.ActionButtonsPreference;
import com.android.settingslib.widget.LayoutPreference;
@@ -438,9 +439,8 @@ public class AppStorageSettings extends AppInfoWithHeader
int numberResources = entry.getValue().value;
Preference pref = new Preference(getPrefContext());
pref.setTitle(entry.getKey());
- pref.setSummary(getPrefContext().getResources()
- .getQuantityString(R.plurals.uri_permissions_text, numberResources,
- numberResources));
+ pref.setSummary(StringUtil.getIcuPluralsString(mUri.getContext(), numberResources,
+ R.string.uri_permissions_text));
pref.setSelectable(false);
pref.setLayoutResource(R.layout.horizontal_preference);
pref.setOrder(order);
diff --git a/src/com/android/settings/applications/AppsPreferenceController.java b/src/com/android/settings/applications/AppsPreferenceController.java
index 922ba3c505b..37ec0bbf0a1 100644
--- a/src/com/android/settings/applications/AppsPreferenceController.java
+++ b/src/com/android/settings/applications/AppsPreferenceController.java
@@ -142,9 +142,8 @@ public class AppsPreferenceController extends BasePreferenceController implement
@Override
protected void onCountComplete(int num) {
if (!mRecentApps.isEmpty()) {
- mSeeAllPref.setTitle(
- mContext.getResources().getQuantityString(R.plurals.see_all_apps_title,
- num, num));
+ mSeeAllPref.setTitle(StringUtil.getIcuPluralsString(mContext, num,
+ R.string.see_all_apps_title));
} else {
mAllAppsInfoPref.setSummary(mContext.getString(R.string.apps_summary, num));
}
diff --git a/src/com/android/settings/applications/autofill/PasswordsPreferenceController.java b/src/com/android/settings/applications/autofill/PasswordsPreferenceController.java
index a130bb28302..03a551fb798 100644
--- a/src/com/android/settings/applications/autofill/PasswordsPreferenceController.java
+++ b/src/com/android/settings/applications/autofill/PasswordsPreferenceController.java
@@ -55,6 +55,7 @@ import com.android.internal.os.IResultReceiver;
import com.android.settings.R;
import com.android.settings.Utils;
import com.android.settings.core.BasePreferenceController;
+import com.android.settingslib.utils.StringUtil;
import com.android.settingslib.widget.AppPreference;
import java.lang.ref.WeakReference;
@@ -153,9 +154,8 @@ public class PasswordsPreferenceController extends BasePreferenceController
passwordCount.observe(
mLifecycleOwner, count -> {
// TODO(b/169455298): Validate the result.
- final CharSequence summary =
- mContext.getResources().getQuantityString(
- R.plurals.autofill_passwords_count, count, count);
+ final CharSequence summary = StringUtil.getIcuPluralsString(mContext, count,
+ R.string.autofill_passwords_count);
pref.setSummary(summary);
});
// TODO(b/169455298): Limit the number of concurrent queries.
diff --git a/src/com/android/settings/deviceinfo/BuildNumberPreferenceController.java b/src/com/android/settings/deviceinfo/BuildNumberPreferenceController.java
index 6af58b5bc6b..55b38afd0a8 100644
--- a/src/com/android/settings/deviceinfo/BuildNumberPreferenceController.java
+++ b/src/com/android/settings/deviceinfo/BuildNumberPreferenceController.java
@@ -47,6 +47,7 @@ import com.android.settingslib.core.lifecycle.LifecycleObserver;
import com.android.settingslib.core.lifecycle.events.OnStart;
import com.android.settingslib.development.DevelopmentSettingsEnabler;
+import com.android.settingslib.utils.StringUtil;
import com.google.android.setupcompat.util.WizardManagerHelper;
public class BuildNumberPreferenceController extends BasePreferenceController implements
@@ -181,9 +182,8 @@ public class BuildNumberPreferenceController extends BasePreferenceController im
mDevHitToast.cancel();
}
mDevHitToast = Toast.makeText(mContext,
- mContext.getResources().getQuantityString(
- R.plurals.show_dev_countdown, mDevHitCountdown,
- mDevHitCountdown),
+ StringUtil.getIcuPluralsString(mContext, mDevHitCountdown,
+ R.string.show_dev_countdown),
Toast.LENGTH_SHORT);
mDevHitToast.show();
}
diff --git a/src/com/android/settings/enterprise/AdminGrantedPermissionsPreferenceControllerBase.java b/src/com/android/settings/enterprise/AdminGrantedPermissionsPreferenceControllerBase.java
index 86d08cb674d..65ee5e063d9 100644
--- a/src/com/android/settings/enterprise/AdminGrantedPermissionsPreferenceControllerBase.java
+++ b/src/com/android/settings/enterprise/AdminGrantedPermissionsPreferenceControllerBase.java
@@ -24,6 +24,7 @@ import com.android.settings.applications.ApplicationFeatureProvider;
import com.android.settings.core.PreferenceControllerMixin;
import com.android.settings.overlay.FeatureFactory;
import com.android.settingslib.core.AbstractPreferenceController;
+import com.android.settingslib.utils.StringUtil;
public abstract class AdminGrantedPermissionsPreferenceControllerBase
extends AbstractPreferenceController implements PreferenceControllerMixin {
@@ -51,9 +52,8 @@ public abstract class AdminGrantedPermissionsPreferenceControllerBase
if (num == 0) {
mHasApps = false;
} else {
- preference.setSummary(mContext.getResources().getQuantityString(
- R.plurals.enterprise_privacy_number_packages_lower_bound,
- num, num));
+ preference.setSummary(StringUtil.getIcuPluralsString(mContext, num,
+ R.string.enterprise_privacy_number_packages_lower_bound));
mHasApps = true;
}
preference.setVisible(mHasApps);
diff --git a/src/com/android/settings/enterprise/CaCertsPreferenceControllerBase.java b/src/com/android/settings/enterprise/CaCertsPreferenceControllerBase.java
index c7dde5cc462..936df255ea6 100644
--- a/src/com/android/settings/enterprise/CaCertsPreferenceControllerBase.java
+++ b/src/com/android/settings/enterprise/CaCertsPreferenceControllerBase.java
@@ -22,6 +22,7 @@ import com.android.settings.R;
import com.android.settings.core.PreferenceControllerMixin;
import com.android.settings.overlay.FeatureFactory;
import com.android.settingslib.core.AbstractPreferenceController;
+import com.android.settingslib.utils.StringUtil;
public abstract class CaCertsPreferenceControllerBase
extends AbstractPreferenceController implements PreferenceControllerMixin {
@@ -36,9 +37,8 @@ public abstract class CaCertsPreferenceControllerBase
@Override
public void updateState(Preference preference) {
- final int certs = getNumberOfCaCerts();
- preference.setSummary(mContext.getResources().getQuantityString(
- R.plurals.enterprise_privacy_number_ca_certs, certs, certs));
+ preference.setSummary(StringUtil.getIcuPluralsString(mContext, getNumberOfCaCerts(),
+ R.string.enterprise_privacy_number_ca_certs));
}
@Override
diff --git a/src/com/android/settings/enterprise/EnterpriseInstalledPackagesPreferenceController.java b/src/com/android/settings/enterprise/EnterpriseInstalledPackagesPreferenceController.java
index 9bd4279db3f..91ebeff7523 100644
--- a/src/com/android/settings/enterprise/EnterpriseInstalledPackagesPreferenceController.java
+++ b/src/com/android/settings/enterprise/EnterpriseInstalledPackagesPreferenceController.java
@@ -22,6 +22,7 @@ import com.android.settings.applications.ApplicationFeatureProvider;
import com.android.settings.core.PreferenceControllerMixin;
import com.android.settings.overlay.FeatureFactory;
import com.android.settingslib.core.AbstractPreferenceController;
+import com.android.settingslib.utils.StringUtil;
public class EnterpriseInstalledPackagesPreferenceController
extends AbstractPreferenceController implements PreferenceControllerMixin {
@@ -47,9 +48,8 @@ public class EnterpriseInstalledPackagesPreferenceController
available = false;
} else {
available = true;
- preference.setSummary(mContext.getResources().getQuantityString(
- R.plurals.enterprise_privacy_number_packages_lower_bound, num,
- num));
+ preference.setSummary(StringUtil.getIcuPluralsString(mContext, num,
+ R.string.enterprise_privacy_number_packages_lower_bound));
}
preference.setVisible(available);
diff --git a/src/com/android/settings/enterprise/EnterpriseSetDefaultAppsListPreferenceController.java b/src/com/android/settings/enterprise/EnterpriseSetDefaultAppsListPreferenceController.java
index 3c090ed73d6..3e83523842d 100644
--- a/src/com/android/settings/enterprise/EnterpriseSetDefaultAppsListPreferenceController.java
+++ b/src/com/android/settings/enterprise/EnterpriseSetDefaultAppsListPreferenceController.java
@@ -40,6 +40,7 @@ import com.android.settings.core.PreferenceControllerMixin;
import com.android.settings.overlay.FeatureFactory;
import com.android.settings.users.UserFeatureProvider;
import com.android.settingslib.core.AbstractPreferenceController;
+import com.android.settingslib.utils.StringUtil;
import com.android.settingslib.utils.ThreadUtils;
import java.util.ArrayList;
@@ -192,16 +193,16 @@ public class EnterpriseSetDefaultAppsListPreferenceController extends
case CONTACTS:
return context.getString(R.string.default_contacts_app_title);
case PHONE:
- return context.getResources()
- .getQuantityString(R.plurals.default_phone_app_title, appCount);
+ return StringUtil.getIcuPluralsString(context, appCount,
+ R.string.default_phone_app_title);
case MAP:
return context.getString(R.string.default_map_app_title);
case EMAIL:
- return context.getResources()
- .getQuantityString(R.plurals.default_email_app_title, appCount);
+ return StringUtil.getIcuPluralsString(context, appCount,
+ R.string.default_email_app_title);
case CAMERA:
- return context.getResources()
- .getQuantityString(R.plurals.default_camera_app_title, appCount);
+ return StringUtil.getIcuPluralsString(context, appCount,
+ R.string.default_camera_app_title);
default:
throw new IllegalStateException("Unknown type of default " + typeOfDefault);
}
diff --git a/src/com/android/settings/enterprise/EnterpriseSetDefaultAppsPreferenceController.java b/src/com/android/settings/enterprise/EnterpriseSetDefaultAppsPreferenceController.java
index b2f9459d8a3..32abcc461de 100644
--- a/src/com/android/settings/enterprise/EnterpriseSetDefaultAppsPreferenceController.java
+++ b/src/com/android/settings/enterprise/EnterpriseSetDefaultAppsPreferenceController.java
@@ -26,6 +26,7 @@ import com.android.settings.core.PreferenceControllerMixin;
import com.android.settings.overlay.FeatureFactory;
import com.android.settings.users.UserFeatureProvider;
import com.android.settingslib.core.AbstractPreferenceController;
+import com.android.settingslib.utils.StringUtil;
public class EnterpriseSetDefaultAppsPreferenceController
extends AbstractPreferenceController implements PreferenceControllerMixin {
@@ -44,8 +45,8 @@ public class EnterpriseSetDefaultAppsPreferenceController
@Override
public void updateState(Preference preference) {
final int num = getNumberOfEnterpriseSetDefaultApps();
- preference.setSummary(mContext.getResources().getQuantityString(
- R.plurals.enterprise_privacy_number_packages, num, num));
+ preference.setSummary(StringUtil.getIcuPluralsString(mContext, num,
+ R.string.enterprise_privacy_number_packages));
}
@Override
diff --git a/src/com/android/settings/enterprise/FailedPasswordWipePreferenceControllerBase.java b/src/com/android/settings/enterprise/FailedPasswordWipePreferenceControllerBase.java
index 322589ea3f9..f008b189965 100644
--- a/src/com/android/settings/enterprise/FailedPasswordWipePreferenceControllerBase.java
+++ b/src/com/android/settings/enterprise/FailedPasswordWipePreferenceControllerBase.java
@@ -22,6 +22,7 @@ import com.android.settings.R;
import com.android.settings.core.PreferenceControllerMixin;
import com.android.settings.overlay.FeatureFactory;
import com.android.settingslib.core.AbstractPreferenceController;
+import com.android.settingslib.utils.StringUtil;
public abstract class FailedPasswordWipePreferenceControllerBase
extends AbstractPreferenceController implements PreferenceControllerMixin {
@@ -39,9 +40,8 @@ public abstract class FailedPasswordWipePreferenceControllerBase
@Override
public void updateState(Preference preference) {
final int failedPasswordsBeforeWipe = getMaximumFailedPasswordsBeforeWipe();
- preference.setSummary(mContext.getResources().getQuantityString(
- R.plurals.enterprise_privacy_number_failed_password_wipe,
- failedPasswordsBeforeWipe, failedPasswordsBeforeWipe));
+ preference.setSummary(StringUtil.getIcuPluralsString(mContext, failedPasswordsBeforeWipe,
+ R.string.enterprise_privacy_number_failed_password_wipe));
}
@Override
diff --git a/src/com/android/settings/enterprise/ManageDeviceAdminPreferenceController.java b/src/com/android/settings/enterprise/ManageDeviceAdminPreferenceController.java
index 71bd3d1f358..90a1a1e8c9b 100644
--- a/src/com/android/settings/enterprise/ManageDeviceAdminPreferenceController.java
+++ b/src/com/android/settings/enterprise/ManageDeviceAdminPreferenceController.java
@@ -21,6 +21,7 @@ import android.content.Context;
import com.android.settings.R;
import com.android.settings.core.BasePreferenceController;
import com.android.settings.overlay.FeatureFactory;
+import com.android.settingslib.utils.StringUtil;
public class ManageDeviceAdminPreferenceController extends BasePreferenceController {
@@ -47,8 +48,8 @@ public class ManageDeviceAdminPreferenceController extends BasePreferenceControl
}
// TODO: override
- return mContext.getResources().getQuantityString(R.plurals.number_of_device_admins,
- activeAdmins, activeAdmins);
+ return StringUtil.getIcuPluralsString(mContext, activeAdmins,
+ R.string.number_of_device_admins);
}
@Override
diff --git a/src/com/android/settings/localepicker/LocaleListEditor.java b/src/com/android/settings/localepicker/LocaleListEditor.java
index 5947a879eac..1d6fb47d76a 100644
--- a/src/com/android/settings/localepicker/LocaleListEditor.java
+++ b/src/com/android/settings/localepicker/LocaleListEditor.java
@@ -46,6 +46,7 @@ import com.android.settings.overlay.FeatureFactory;
import com.android.settings.search.BaseSearchIndexProvider;
import com.android.settingslib.search.SearchIndexable;
import com.android.settingslib.search.SearchIndexableRaw;
+import com.android.settingslib.utils.StringUtil;
import java.util.ArrayList;
import java.util.List;
@@ -218,8 +219,8 @@ public class LocaleListEditor extends RestrictedSettingsFragment {
return;
}
- final String title = getResources().getQuantityString(R.plurals.dlg_remove_locales_title,
- checkedCount);
+ final String title = StringUtil.getIcuPluralsString(getContext(), checkedCount,
+ R.string.dlg_remove_locales_title);
mShowingRemoveDialog = true;
final AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
diff --git a/src/com/android/settings/location/AppLocationPermissionPreferenceController.java b/src/com/android/settings/location/AppLocationPermissionPreferenceController.java
index 90b37978fdd..37bbd08fb18 100644
--- a/src/com/android/settings/location/AppLocationPermissionPreferenceController.java
+++ b/src/com/android/settings/location/AppLocationPermissionPreferenceController.java
@@ -16,9 +16,12 @@ import androidx.preference.Preference;
import com.android.settings.R;
import com.android.settings.Utils;
import com.android.settings.core.PreferenceControllerMixin;
+import com.android.settingslib.utils.StringUtil;
import java.util.Arrays;
+import java.util.HashMap;
import java.util.List;
+import java.util.Map;
import java.util.concurrent.atomic.AtomicInteger;
public class AppLocationPermissionPreferenceController extends
@@ -56,9 +59,11 @@ public class AppLocationPermissionPreferenceController extends
if (mNumTotal == -1 || mNumHasLocation == -1) {
return mContext.getString(R.string.location_settings_loading_app_permission_stats);
}
- return mContext.getResources().getQuantityString(
- R.plurals.location_app_permission_summary_location_on, mNumHasLocation,
- mNumHasLocation, mNumTotal);
+ Map arguments = new HashMap<>();
+ arguments.put("count", mNumHasLocation);
+ arguments.put("total", mNumTotal);
+ return StringUtil.getIcuPluralsString(mContext, arguments,
+ R.string.location_app_permission_summary_location_on);
} else {
return mContext.getString(R.string.location_app_permission_summary_location_off);
}
diff --git a/src/com/android/settings/network/NetworkProviderSettings.java b/src/com/android/settings/network/NetworkProviderSettings.java
index 7b7cdca37d1..a2ade4740a1 100644
--- a/src/com/android/settings/network/NetworkProviderSettings.java
+++ b/src/com/android/settings/network/NetworkProviderSettings.java
@@ -85,6 +85,7 @@ import com.android.settingslib.RestrictedLockUtils;
import com.android.settingslib.RestrictedLockUtilsInternal;
import com.android.settingslib.search.Indexable;
import com.android.settingslib.search.SearchIndexable;
+import com.android.settingslib.utils.StringUtil;
import com.android.settingslib.utils.ThreadUtils;
import com.android.settingslib.widget.FooterPreference;
import com.android.settingslib.widget.LayoutPreference;
@@ -1130,22 +1131,21 @@ public class NetworkProviderSettings extends RestrictedSettingsFragment
private String getSavedNetworkSettingsSummaryText(
int numSavedNetworks, int numSavedSubscriptions) {
- if (getResources() == null) {
+ if (getContext() == null) {
Log.w(TAG, "getSavedNetworkSettingsSummaryText shouldn't run if resource is not ready");
return null;
}
if (numSavedSubscriptions == 0) {
- return getResources().getQuantityString(R.plurals.wifi_saved_access_points_summary,
- numSavedNetworks, numSavedNetworks);
+ return StringUtil.getIcuPluralsString(getContext(), numSavedNetworks,
+ R.string.wifi_saved_access_points_summary);
} else if (numSavedNetworks == 0) {
- return getResources().getQuantityString(
- R.plurals.wifi_saved_passpoint_access_points_summary,
- numSavedSubscriptions, numSavedSubscriptions);
+ return StringUtil.getIcuPluralsString(getContext(), numSavedSubscriptions,
+ R.string.wifi_saved_passpoint_access_points_summary);
} else {
final int numTotalEntries = numSavedNetworks + numSavedSubscriptions;
- return getResources().getQuantityString(R.plurals.wifi_saved_all_access_points_summary,
- numTotalEntries, numTotalEntries);
+ return StringUtil.getIcuPluralsString(getContext(), numTotalEntries,
+ R.string.wifi_saved_all_access_points_summary);
}
}
diff --git a/src/com/android/settings/password/ChooseLockPassword.java b/src/com/android/settings/password/ChooseLockPassword.java
index 648b64430fe..0c05039deeb 100644
--- a/src/com/android/settings/password/ChooseLockPassword.java
+++ b/src/com/android/settings/password/ChooseLockPassword.java
@@ -780,46 +780,38 @@ public class ChooseLockPassword extends SettingsActivity {
messages.add(getString(R.string.lockpassword_illegal_character));
break;
case NOT_ENOUGH_UPPER_CASE:
- messages.add(getResources().getQuantityString(
- R.plurals.lockpassword_password_requires_uppercase,
- error.requirement, error.requirement));
+ messages.add(StringUtil.getIcuPluralsString(getContext(), error.requirement,
+ R.string.lockpassword_password_requires_uppercase));
break;
case NOT_ENOUGH_LOWER_CASE:
- messages.add(getResources().getQuantityString(
- R.plurals.lockpassword_password_requires_lowercase,
- error.requirement, error.requirement));
+ messages.add(StringUtil.getIcuPluralsString(getContext(), error.requirement,
+ R.string.lockpassword_password_requires_lowercase));
break;
case NOT_ENOUGH_LETTERS:
- messages.add(getResources().getQuantityString(
- R.plurals.lockpassword_password_requires_letters,
- error.requirement, error.requirement));
+ messages.add(StringUtil.getIcuPluralsString(getContext(), error.requirement,
+ R.string.lockpassword_password_requires_letters));
break;
case NOT_ENOUGH_DIGITS:
- messages.add(getResources().getQuantityString(
- R.plurals.lockpassword_password_requires_numeric,
- error.requirement, error.requirement));
+ messages.add(StringUtil.getIcuPluralsString(getContext(), error.requirement,
+ R.string.lockpassword_password_requires_numeric));
break;
case NOT_ENOUGH_SYMBOLS:
- messages.add(getResources().getQuantityString(
- R.plurals.lockpassword_password_requires_symbols,
- error.requirement, error.requirement));
+ messages.add(StringUtil.getIcuPluralsString(getContext(), error.requirement,
+ R.string.lockpassword_password_requires_symbols));
break;
case NOT_ENOUGH_NON_LETTER:
- messages.add(getResources().getQuantityString(
- R.plurals.lockpassword_password_requires_nonletter,
- error.requirement, error.requirement));
+ messages.add(StringUtil.getIcuPluralsString(getContext(), error.requirement,
+ R.string.lockpassword_password_requires_nonletter));
break;
case NOT_ENOUGH_NON_DIGITS:
- messages.add(getResources().getQuantityString(
- R.plurals.lockpassword_password_requires_nonnumerical,
- error.requirement, error.requirement));
+ messages.add(StringUtil.getIcuPluralsString(getContext(), error.requirement,
+ R.string.lockpassword_password_requires_nonnumerical));
break;
case TOO_SHORT:
- messages.add(getResources().getQuantityString(
+ messages.add(StringUtil.getIcuPluralsString(getContext(), error.requirement,
mIsAlphaMode
- ? R.plurals.lockpassword_password_too_short
- : R.plurals.lockpassword_pin_too_short,
- error.requirement, error.requirement));
+ ? R.string.lockpassword_password_too_short
+ : R.string.lockpassword_pin_too_short));
break;
case TOO_SHORT_WHEN_ALL_NUMERIC:
messages.add(
@@ -827,11 +819,10 @@ public class ChooseLockPassword extends SettingsActivity {
R.string.lockpassword_password_too_short_all_numeric));
break;
case TOO_LONG:
- messages.add(getResources().getQuantityString(
- mIsAlphaMode
- ? R.plurals.lockpassword_password_too_long
- : R.plurals.lockpassword_pin_too_long,
- error.requirement + 1, error.requirement + 1));
+ messages.add(StringUtil.getIcuPluralsString(getContext(),
+ error.requirement + 1, mIsAlphaMode
+ ? R.string.lockpassword_password_too_long
+ : R.string.lockpassword_pin_too_long));
break;
case CONTAINS_SEQUENCE:
messages.add(getString(R.string.lockpassword_pin_no_sequential_digits));
diff --git a/src/com/android/settings/privacy/AccessibilityUsagePreferenceController.java b/src/com/android/settings/privacy/AccessibilityUsagePreferenceController.java
index a36d3ce467f..a78ccee26e7 100644
--- a/src/com/android/settings/privacy/AccessibilityUsagePreferenceController.java
+++ b/src/com/android/settings/privacy/AccessibilityUsagePreferenceController.java
@@ -25,6 +25,7 @@ import androidx.preference.Preference;
import com.android.settings.R;
import com.android.settings.core.BasePreferenceController;
+import com.android.settingslib.utils.StringUtil;
import java.util.List;
@@ -60,7 +61,7 @@ public class AccessibilityUsagePreferenceController extends BasePreferenceContro
@Override
public CharSequence getSummary() {
- return mContext.getResources().getQuantityString(R.plurals.accessibility_usage_summary,
- mEnabledServiceInfos.size(), mEnabledServiceInfos.size());
+ return StringUtil.getIcuPluralsString(mContext, mEnabledServiceInfos.size(),
+ R.string.accessibility_usage_summary);
}
}
diff --git a/src/com/android/settings/security/trustagent/ManageTrustAgentsPreferenceController.java b/src/com/android/settings/security/trustagent/ManageTrustAgentsPreferenceController.java
index 9cc50f4c816..8943878c290 100644
--- a/src/com/android/settings/security/trustagent/ManageTrustAgentsPreferenceController.java
+++ b/src/com/android/settings/security/trustagent/ManageTrustAgentsPreferenceController.java
@@ -26,6 +26,7 @@ import com.android.settings.R;
import com.android.settings.core.BasePreferenceController;
import com.android.settings.overlay.FeatureFactory;
import com.android.settings.security.SecurityFeatureProvider;
+import com.android.settingslib.utils.StringUtil;
public class ManageTrustAgentsPreferenceController extends BasePreferenceController {
@@ -56,9 +57,8 @@ public class ManageTrustAgentsPreferenceController extends BasePreferenceControl
preference.setSummary(R.string.disabled_because_no_backup_security);
} else if (numberOfTrustAgent > 0) {
preference.setEnabled(true);
- preference.setSummary(mContext.getResources().getQuantityString(
- R.plurals.manage_trust_agents_summary_on,
- numberOfTrustAgent, numberOfTrustAgent));
+ preference.setSummary(StringUtil.getIcuPluralsString(mContext, numberOfTrustAgent,
+ R.string.manage_trust_agents_summary_on));
} else {
preference.setEnabled(true);
preference.setSummary(R.string.manage_trust_agents_summary);
diff --git a/src/com/android/settings/wifi/WifiSettings.java b/src/com/android/settings/wifi/WifiSettings.java
index fbed5d2eed3..2a166645f18 100644
--- a/src/com/android/settings/wifi/WifiSettings.java
+++ b/src/com/android/settings/wifi/WifiSettings.java
@@ -75,6 +75,7 @@ import com.android.settingslib.RestrictedLockUtils;
import com.android.settingslib.RestrictedLockUtilsInternal;
import com.android.settingslib.search.Indexable;
import com.android.settingslib.search.SearchIndexable;
+import com.android.settingslib.utils.StringUtil;
import com.android.settingslib.wifi.WifiSavedConfigUtils;
import com.android.wifitrackerlib.WifiEntry;
import com.android.wifitrackerlib.WifiEntry.ConnectCallback;
@@ -915,17 +916,19 @@ public class WifiSettings extends RestrictedSettingsFragment
private String getSavedNetworkSettingsSummaryText(
int numSavedNetworks, int numSavedSubscriptions) {
+ if (getContext() == null) {
+ return "";
+ }
if (numSavedSubscriptions == 0) {
- return getResources().getQuantityString(R.plurals.wifi_saved_access_points_summary,
- numSavedNetworks, numSavedNetworks);
+ return StringUtil.getIcuPluralsString(getContext(), numSavedNetworks,
+ R.string.wifi_saved_access_points_summary);
} else if (numSavedNetworks == 0) {
- return getResources().getQuantityString(
- R.plurals.wifi_saved_passpoint_access_points_summary,
- numSavedSubscriptions, numSavedSubscriptions);
+ return StringUtil.getIcuPluralsString(getContext(), numSavedSubscriptions,
+ R.string.wifi_saved_passpoint_access_points_summary);
} else {
final int numTotalEntries = numSavedNetworks + numSavedSubscriptions;
- return getResources().getQuantityString(R.plurals.wifi_saved_all_access_points_summary,
- numTotalEntries, numTotalEntries);
+ return StringUtil.getIcuPluralsString(getContext(), numTotalEntries,
+ R.string.wifi_saved_all_access_points_summary);
}
}
diff --git a/tests/robotests/src/com/android/settings/enterprise/AdminGrantedPermissionsPreferenceControllerTestBase.java b/tests/robotests/src/com/android/settings/enterprise/AdminGrantedPermissionsPreferenceControllerTestBase.java
index 06e41073716..77f5d133216 100644
--- a/tests/robotests/src/com/android/settings/enterprise/AdminGrantedPermissionsPreferenceControllerTestBase.java
+++ b/tests/robotests/src/com/android/settings/enterprise/AdminGrantedPermissionsPreferenceControllerTestBase.java
@@ -33,6 +33,7 @@ import androidx.preference.Preference;
import com.android.settings.R;
import com.android.settings.applications.ApplicationFeatureProvider;
import com.android.settings.testutils.FakeFeatureFactory;
+import com.android.settingslib.utils.StringUtil;
import org.junit.Before;
import org.junit.Test;
@@ -80,6 +81,8 @@ public abstract class AdminGrantedPermissionsPreferenceControllerTestBase {
}).when(mFeatureFactory.applicationFeatureProvider)
.calculateNumberOfAppsWithAdminGrantedPermissions(eq(mPermissions),
eq(async), any());
+ when(mContext.getResources().getString(R.string.enterprise_privacy_number_packages_lower_bound))
+ .thenReturn("Minimum # apps");
}
@Test
@@ -92,8 +95,8 @@ public abstract class AdminGrantedPermissionsPreferenceControllerTestBase {
assertThat(preference.isVisible()).isFalse();
setNumberOfPackagesWithAdminGrantedPermissions(20, true /* async */);
- when(mContext.getResources().getQuantityString(
- R.plurals.enterprise_privacy_number_packages_lower_bound, 20, 20))
+ when(StringUtil.getIcuPluralsString(mContext, 20,
+ R.string.enterprise_privacy_number_packages_lower_bound))
.thenReturn("minimum 20 apps");
mController.updateState(preference);
assertThat(preference.getSummary()).isEqualTo("minimum 20 apps");
diff --git a/tests/robotests/src/com/android/settings/enterprise/CaCertsPreferenceControllerTestBase.java b/tests/robotests/src/com/android/settings/enterprise/CaCertsPreferenceControllerTestBase.java
index e26915b1083..96bfff48cbb 100644
--- a/tests/robotests/src/com/android/settings/enterprise/CaCertsPreferenceControllerTestBase.java
+++ b/tests/robotests/src/com/android/settings/enterprise/CaCertsPreferenceControllerTestBase.java
@@ -18,6 +18,8 @@ package com.android.settings.enterprise;
import static com.google.common.truth.Truth.assertThat;
+import static org.mockito.ArgumentMatchers.anyInt;
+import static org.mockito.ArgumentMatchers.anyString;
import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
@@ -29,6 +31,7 @@ import androidx.preference.Preference;
import com.android.settings.R;
import com.android.settings.testutils.FakeFeatureFactory;
+import com.android.settingslib.utils.StringUtil;
import org.junit.Before;
import org.junit.Test;
@@ -59,8 +62,10 @@ public abstract class CaCertsPreferenceControllerTestBase {
public void testUpdateState() {
final Preference preference = new Preference(mContext, null, 0, 0);
- when(mContext.getResources().getQuantityString(R.plurals.enterprise_privacy_number_ca_certs,
- 10, 10)).thenReturn("10 certs");
+ when(mContext.getResources().getString(R.string.enterprise_privacy_number_ca_certs))
+ .thenReturn("# certs");
+ when(StringUtil.getIcuPluralsString(mContext, 10,
+ R.string.enterprise_privacy_number_ca_certs)).thenReturn("10 certs");
mockGetNumberOfCaCerts(10);
mController.updateState(preference);
assertThat(preference.getSummary()).isEqualTo("10 certs");
diff --git a/tests/robotests/src/com/android/settings/enterprise/EnterpriseInstalledPackagesPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/enterprise/EnterpriseInstalledPackagesPreferenceControllerTest.java
index c32d2d79256..c823c1d37ca 100644
--- a/tests/robotests/src/com/android/settings/enterprise/EnterpriseInstalledPackagesPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/enterprise/EnterpriseInstalledPackagesPreferenceControllerTest.java
@@ -33,6 +33,7 @@ import androidx.preference.Preference;
import com.android.settings.R;
import com.android.settings.applications.ApplicationFeatureProvider;
import com.android.settings.testutils.FakeFeatureFactory;
+import com.android.settingslib.utils.StringUtil;
import org.junit.Before;
import org.junit.Test;
@@ -75,6 +76,8 @@ public class EnterpriseInstalledPackagesPreferenceControllerTest {
}
}).when(mFeatureFactory.applicationFeatureProvider)
.calculateNumberOfPolicyInstalledApps(eq(async), any());
+ when(mContext.getResources().getString(R.string.enterprise_privacy_number_packages_lower_bound))
+ .thenReturn("Minimum # apps");
}
@Test
@@ -87,8 +90,8 @@ public class EnterpriseInstalledPackagesPreferenceControllerTest {
assertThat(preference.isVisible()).isFalse();
setNumberOfEnterpriseInstalledPackages(20, true /* async */);
- when(mContext.getResources().getQuantityString(
- R.plurals.enterprise_privacy_number_packages_lower_bound, 20, 20))
+ when(StringUtil.getIcuPluralsString(mContext, 20,
+ R.string.enterprise_privacy_number_packages_lower_bound))
.thenReturn("minimum 20 apps");
mController.updateState(preference);
assertThat(preference.getSummary()).isEqualTo("minimum 20 apps");
diff --git a/tests/robotests/src/com/android/settings/enterprise/EnterpriseSetDefaultAppsListPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/enterprise/EnterpriseSetDefaultAppsListPreferenceControllerTest.java
index 7a2aa5cf962..b1e2c0c6541 100644
--- a/tests/robotests/src/com/android/settings/enterprise/EnterpriseSetDefaultAppsListPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/enterprise/EnterpriseSetDefaultAppsListPreferenceControllerTest.java
@@ -93,7 +93,7 @@ public class EnterpriseSetDefaultAppsListPreferenceControllerTest {
when(mContext.getString(R.string.default_browser_title)).thenReturn(BROWSER_TITLE);
Resources resources = spy(mContext.getResources());
when(mContext.getResources()).thenReturn(resources);
- when(resources.getQuantityString(R.plurals.default_phone_app_title, 2))
+ when(resources.getString(R.string.default_phone_app_title))
.thenReturn(PHONE_TITLE);
when(mContext.getString(R.string.app_names_concatenation_template_2))
.thenReturn("%1$s, %2$s");
diff --git a/tests/robotests/src/com/android/settings/enterprise/EnterpriseSetDefaultAppsPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/enterprise/EnterpriseSetDefaultAppsPreferenceControllerTest.java
index 7a38feb97fe..02d1f643a1f 100644
--- a/tests/robotests/src/com/android/settings/enterprise/EnterpriseSetDefaultAppsPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/enterprise/EnterpriseSetDefaultAppsPreferenceControllerTest.java
@@ -39,6 +39,7 @@ import com.android.settings.R;
import com.android.settings.applications.EnterpriseDefaultApps;
import com.android.settings.applications.UserAppInfo;
import com.android.settings.testutils.FakeFeatureFactory;
+import com.android.settingslib.utils.StringUtil;
import org.junit.Before;
import org.junit.Test;
@@ -101,8 +102,10 @@ public final class EnterpriseSetDefaultAppsPreferenceControllerTest {
setEnterpriseSetDefaultApps(EnterpriseDefaultApps.CALENDAR.getIntents(), 16);
setEnterpriseSetDefaultApps(EnterpriseDefaultApps.CONTACTS.getIntents(), 32);
setEnterpriseSetDefaultApps(EnterpriseDefaultApps.PHONE.getIntents(), 64);
- when(mContext.getResources().getQuantityString(R.plurals.enterprise_privacy_number_packages,
- 127, 127)).thenReturn("127 apps");
+ when(mContext.getResources().getString(R.string.enterprise_privacy_number_packages))
+ .thenReturn("# apps");
+ when(StringUtil.getIcuPluralsString(mContext, 127,
+ R.string.enterprise_privacy_number_packages)).thenReturn("127 apps");
// As setEnterpriseSetDefaultApps uses fake Users, we need to list them via UserManager.
configureUsers(64);
diff --git a/tests/robotests/src/com/android/settings/enterprise/FailedPasswordWipePreferenceControllerTestBase.java b/tests/robotests/src/com/android/settings/enterprise/FailedPasswordWipePreferenceControllerTestBase.java
index 03854bffad0..b82919eecef 100644
--- a/tests/robotests/src/com/android/settings/enterprise/FailedPasswordWipePreferenceControllerTestBase.java
+++ b/tests/robotests/src/com/android/settings/enterprise/FailedPasswordWipePreferenceControllerTestBase.java
@@ -29,6 +29,7 @@ import androidx.preference.Preference;
import com.android.settings.R;
import com.android.settings.testutils.FakeFeatureFactory;
+import com.android.settingslib.utils.StringUtil;
import org.junit.Before;
import org.junit.Test;
@@ -68,8 +69,10 @@ public abstract class FailedPasswordWipePreferenceControllerTestBase {
final Preference preference = new Preference(mContext, null, 0, 0);
setMaximumFailedPasswordsBeforeWipe(10);
- when(mContext.getResources().getQuantityString(
- R.plurals.enterprise_privacy_number_failed_password_wipe, 10, 10))
+ when(mContext.getResources().getString(
+ R.string.enterprise_privacy_number_failed_password_wipe)).thenReturn("# attempts");
+ when(StringUtil.getIcuPluralsString(mContext, 10,
+ R.string.enterprise_privacy_number_failed_password_wipe))
.thenReturn("10 attempts");
mController.updateState(preference);
assertThat(preference.getSummary()).isEqualTo("10 attempts");
diff --git a/tests/robotests/src/com/android/settings/enterprise/ManageDeviceAdminPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/enterprise/ManageDeviceAdminPreferenceControllerTest.java
index 492a8639c7c..a2a0de45657 100644
--- a/tests/robotests/src/com/android/settings/enterprise/ManageDeviceAdminPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/enterprise/ManageDeviceAdminPreferenceControllerTest.java
@@ -28,6 +28,7 @@ import androidx.preference.Preference;
import com.android.settings.R;
import com.android.settings.testutils.FakeFeatureFactory;
+import com.android.settingslib.utils.StringUtil;
import org.junit.Before;
import org.junit.Test;
@@ -70,7 +71,8 @@ public class ManageDeviceAdminPreferenceControllerTest {
when(mFeatureFactory.enterprisePrivacyFeatureProvider
.getNumberOfActiveDeviceAdminsForCurrentUserAndManagedProfile()).thenReturn(5);
- when(mResources.getQuantityString(R.plurals.number_of_device_admins, 5, 5))
+ when(mResources.getString(R.string.number_of_device_admins)).thenReturn("# active apps");
+ when(StringUtil.getIcuPluralsString(mContext, 5, R.string.number_of_device_admins))
.thenReturn("5 active apps");
mController.updateState(preference);
assertThat(preference.getSummary()).isEqualTo("5 active apps");
diff --git a/tests/robotests/src/com/android/settings/location/AppLocationPermissionPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/location/AppLocationPermissionPreferenceControllerTest.java
index 4303489682b..df9dc27e216 100644
--- a/tests/robotests/src/com/android/settings/location/AppLocationPermissionPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/location/AppLocationPermissionPreferenceControllerTest.java
@@ -13,6 +13,7 @@ import androidx.lifecycle.LifecycleOwner;
import com.android.settings.R;
import com.android.settingslib.core.lifecycle.Lifecycle;
+import com.android.settingslib.utils.StringUtil;
import org.junit.Before;
import org.junit.Test;
@@ -22,6 +23,9 @@ import org.mockito.MockitoAnnotations;
import org.robolectric.RobolectricTestRunner;
import org.robolectric.RuntimeEnvironment;
+import java.util.HashMap;
+import java.util.Map;
+
@RunWith(RobolectricTestRunner.class)
public class AppLocationPermissionPreferenceControllerTest {
@@ -86,8 +90,11 @@ public class AppLocationPermissionPreferenceControllerTest {
mController.mNumHasLocation = 1;
mController.mNumTotal = 1;
- assertThat(mController.getSummary()).isEqualTo(mContext.getResources().getQuantityString(
- R.plurals.location_app_permission_summary_location_on, 1, 1, 1));
+ Map arguments = new HashMap<>();
+ arguments.put("count", 1);
+ arguments.put("total", 1);
+ assertThat(mController.getSummary()).isEqualTo(StringUtil.getIcuPluralsString(mContext,
+ arguments, R.string.location_app_permission_summary_location_on));
}
@Test
@@ -96,7 +103,10 @@ public class AppLocationPermissionPreferenceControllerTest {
mController.mNumHasLocation = 5;
mController.mNumTotal = 10;
- assertThat(mController.getSummary()).isEqualTo(mContext.getResources().getQuantityString(
- R.plurals.location_app_permission_summary_location_on, 5, 5, 10));
+ Map arguments = new HashMap<>();
+ arguments.put("count", 5);
+ arguments.put("total", 10);
+ assertThat(mController.getSummary()).isEqualTo(StringUtil.getIcuPluralsString(mContext,
+ arguments, R.string.location_app_permission_summary_location_on));
}
}
diff --git a/tests/robotests/src/com/android/settings/network/NetworkProviderSettingsTest.java b/tests/robotests/src/com/android/settings/network/NetworkProviderSettingsTest.java
index 5573ca3dcb6..cd75bef79b2 100644
--- a/tests/robotests/src/com/android/settings/network/NetworkProviderSettingsTest.java
+++ b/tests/robotests/src/com/android/settings/network/NetworkProviderSettingsTest.java
@@ -75,6 +75,7 @@ import com.android.settings.wifi.ConnectedWifiEntryPreference;
import com.android.settings.wifi.LongPressWifiEntryPreference;
import com.android.settings.wifi.WifiConfigController2;
import com.android.settings.wifi.WifiDialog2;
+import com.android.settingslib.utils.StringUtil;
import com.android.settingslib.widget.FooterPreference;
import com.android.settingslib.widget.LayoutPreference;
import com.android.wifitrackerlib.WifiEntry;
@@ -206,9 +207,8 @@ public class NetworkProviderSettingsTest {
assertThat(mNetworkProviderSettings.mSavedNetworksPreference.isVisible()).isTrue();
assertThat(mNetworkProviderSettings.mSavedNetworksPreference.getSummary()).isEqualTo(
- mContext.getResources().getQuantityString(
- R.plurals.wifi_saved_access_points_summary,
- NUM_NETWORKS, NUM_NETWORKS));
+ StringUtil.getIcuPluralsString(mContext, NUM_NETWORKS,
+ R.string.wifi_saved_access_points_summary));
}
@Test
@@ -220,9 +220,8 @@ public class NetworkProviderSettingsTest {
assertThat(mNetworkProviderSettings.mSavedNetworksPreference.isVisible()).isTrue();
assertThat(mNetworkProviderSettings.mSavedNetworksPreference.getSummary()).isEqualTo(
- mContext.getResources().getQuantityString(
- R.plurals.wifi_saved_passpoint_access_points_summary,
- NUM_NETWORKS, NUM_NETWORKS));
+ StringUtil.getIcuPluralsString(mContext, NUM_NETWORKS,
+ R.string.wifi_saved_passpoint_access_points_summary));
}
@Test
@@ -234,9 +233,8 @@ public class NetworkProviderSettingsTest {
assertThat(mNetworkProviderSettings.mSavedNetworksPreference.isVisible()).isTrue();
assertThat(mNetworkProviderSettings.mSavedNetworksPreference.getSummary()).isEqualTo(
- mContext.getResources().getQuantityString(
- R.plurals.wifi_saved_all_access_points_summary,
- NUM_NETWORKS * 2, NUM_NETWORKS * 2));
+ StringUtil.getIcuPluralsString(mContext, NUM_NETWORKS * 2,
+ R.string.wifi_saved_all_access_points_summary));
}
@Test
diff --git a/tests/robotests/src/com/android/settings/security/trustagent/ManageTrustAgentsPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/security/trustagent/ManageTrustAgentsPreferenceControllerTest.java
index dde2f5d17ea..33a62f40a9c 100644
--- a/tests/robotests/src/com/android/settings/security/trustagent/ManageTrustAgentsPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/security/trustagent/ManageTrustAgentsPreferenceControllerTest.java
@@ -29,6 +29,7 @@ import com.android.internal.widget.LockPatternUtils;
import com.android.settings.R;
import com.android.settings.security.trustagent.TrustAgentManager.TrustAgentComponentInfo;
import com.android.settings.testutils.FakeFeatureFactory;
+import com.android.settingslib.utils.StringUtil;
import org.junit.Before;
import org.junit.Test;
@@ -114,8 +115,8 @@ public class ManageTrustAgentsPreferenceControllerTest {
assertThat(mPreference.isEnabled()).isTrue();
assertThat(mPreference.getSummary())
- .isEqualTo(mContext.getResources().getQuantityString(
- R.plurals.manage_trust_agents_summary_on, 1, 1));
+ .isEqualTo(StringUtil.getIcuPluralsString(mContext, 1,
+ R.string.manage_trust_agents_summary_on));
}
@Test
diff --git a/tests/robotests/src/com/android/settings/wifi/WifiSettingsTest.java b/tests/robotests/src/com/android/settings/wifi/WifiSettingsTest.java
index b7c7270b908..17d8099aa16 100644
--- a/tests/robotests/src/com/android/settings/wifi/WifiSettingsTest.java
+++ b/tests/robotests/src/com/android/settings/wifi/WifiSettingsTest.java
@@ -56,6 +56,7 @@ import com.android.settings.R;
import com.android.settings.datausage.DataUsagePreference;
import com.android.settings.testutils.shadow.ShadowDataUsageUtils;
import com.android.settings.testutils.shadow.ShadowFragment;
+import com.android.settingslib.utils.StringUtil;
import com.android.wifitrackerlib.WifiEntry;
import com.android.wifitrackerlib.WifiPickerTracker;
@@ -130,9 +131,8 @@ public class WifiSettingsTest {
assertThat(mWifiSettings.mSavedNetworksPreference.isVisible()).isTrue();
assertThat(mWifiSettings.mSavedNetworksPreference.getSummary()).isEqualTo(
- mContext.getResources().getQuantityString(
- R.plurals.wifi_saved_access_points_summary,
- NUM_NETWORKS, NUM_NETWORKS));
+ StringUtil.getIcuPluralsString(mContext, NUM_NETWORKS,
+ R.string.wifi_saved_access_points_summary));
}
@Test
@@ -144,9 +144,8 @@ public class WifiSettingsTest {
assertThat(mWifiSettings.mSavedNetworksPreference.isVisible()).isTrue();
assertThat(mWifiSettings.mSavedNetworksPreference.getSummary()).isEqualTo(
- mContext.getResources().getQuantityString(
- R.plurals.wifi_saved_passpoint_access_points_summary,
- NUM_NETWORKS, NUM_NETWORKS));
+ StringUtil.getIcuPluralsString(mContext, NUM_NETWORKS,
+ R.string.wifi_saved_passpoint_access_points_summary));
}
@Test
@@ -158,9 +157,8 @@ public class WifiSettingsTest {
assertThat(mWifiSettings.mSavedNetworksPreference.isVisible()).isTrue();
assertThat(mWifiSettings.mSavedNetworksPreference.getSummary()).isEqualTo(
- mContext.getResources().getQuantityString(
- R.plurals.wifi_saved_all_access_points_summary,
- NUM_NETWORKS*2, NUM_NETWORKS*2));
+ StringUtil.getIcuPluralsString(mContext, NUM_NETWORKS * 2,
+ R.string.wifi_saved_all_access_points_summary));
}
@Test