Allow Device Management Role Holder to update Settings strings.
Test: manual
Bug: 188414370
Change-Id: I6e1a06619799a9e99382d791e72e2e4518f93cac
diff --git a/src/com/android/settings/MainClear.java b/src/com/android/settings/MainClear.java
index a7aa8ea..7eb4a5d 100644
--- a/src/com/android/settings/MainClear.java
+++ b/src/com/android/settings/MainClear.java
@@ -16,6 +16,9 @@
package com.android.settings;
+import static android.app.admin.DevicePolicyResources.Strings.Settings.PERSONAL_CATEGORY_HEADER;
+import static android.app.admin.DevicePolicyResources.Strings.Settings.WORK_CATEGORY_HEADER;
+
import static com.android.settingslib.RestrictedLockUtils.EnforcedAdmin;
import android.accounts.Account;
@@ -23,6 +26,7 @@
import android.accounts.AuthenticatorDescription;
import android.app.ActionBar;
import android.app.Activity;
+import android.app.admin.DevicePolicyManager;
import android.app.settings.SettingsEnums;
import android.content.ComponentName;
import android.content.ContentResolver;
@@ -491,8 +495,17 @@
if (profilesSize > 1) {
View titleView = Utils.inflateCategoryHeader(inflater, contents);
final TextView titleText = (TextView) titleView.findViewById(android.R.id.title);
- titleText.setText(userInfo.isManagedProfile() ? R.string.category_work
- : R.string.category_personal);
+
+ DevicePolicyManager devicePolicyManager =
+ context.getSystemService(DevicePolicyManager.class);
+
+ if (userInfo.isManagedProfile()) {
+ titleText.setText(devicePolicyManager.getString(
+ WORK_CATEGORY_HEADER, () -> getString(R.string.category_work)));
+ } else {
+ titleText.setText(devicePolicyManager.getString(
+ PERSONAL_CATEGORY_HEADER, () -> getString(R.string.category_personal)));
+ }
contents.addView(titleView);
}
diff --git a/src/com/android/settings/RemoteBugreportActivity.java b/src/com/android/settings/RemoteBugreportActivity.java
index 2c88ec3..12dce90 100644
--- a/src/com/android/settings/RemoteBugreportActivity.java
+++ b/src/com/android/settings/RemoteBugreportActivity.java
@@ -15,6 +15,11 @@
*/
package com.android.settings;
+import static android.app.admin.DevicePolicyResources.Strings.Settings.SHARE_REMOTE_BUGREPORT_DIALOG_TITLE;
+import static android.app.admin.DevicePolicyResources.Strings.Settings.SHARE_REMOTE_BUGREPORT_FINISHED_REQUEST_CONSENT;
+import static android.app.admin.DevicePolicyResources.Strings.Settings.SHARE_REMOTE_BUGREPORT_NOT_FINISHED_REQUEST_CONSENT;
+import static android.app.admin.DevicePolicyResources.Strings.Settings.SHARING_REMOTE_BUGREPORT_MESSAGE;
+
import android.annotation.Nullable;
import android.app.Activity;
import android.app.admin.DevicePolicyManager;
@@ -42,12 +47,16 @@
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
+ DevicePolicyManager devicePolicyManager = getSystemService(DevicePolicyManager.class);
+
final int notificationType = getIntent().getIntExtra(
DevicePolicyManager.EXTRA_BUGREPORT_NOTIFICATION_TYPE, -1);
if (notificationType == DevicePolicyManager.NOTIFICATION_BUGREPORT_ACCEPTED_NOT_FINISHED) {
AlertDialog dialog = new AlertDialog.Builder(this)
- .setMessage(R.string.sharing_remote_bugreport_dialog_message)
+ .setMessage(devicePolicyManager.getString(
+ SHARING_REMOTE_BUGREPORT_MESSAGE,
+ () -> getString(R.string.sharing_remote_bugreport_dialog_message)))
.setOnDismissListener(new DialogInterface.OnDismissListener() {
@Override
public void onDismiss(DialogInterface dialog) {
@@ -65,12 +74,21 @@
} else if (notificationType == DevicePolicyManager.NOTIFICATION_BUGREPORT_STARTED
|| notificationType
== DevicePolicyManager.NOTIFICATION_BUGREPORT_FINISHED_NOT_ACCEPTED) {
+
+ int defaultMessageId = notificationType
+ == DevicePolicyManager.NOTIFICATION_BUGREPORT_STARTED
+ ? R.string.share_remote_bugreport_dialog_message
+ : R.string.share_remote_bugreport_dialog_message_finished;
+ String overrideMessageId = notificationType
+ == DevicePolicyManager.NOTIFICATION_BUGREPORT_STARTED
+ ? SHARE_REMOTE_BUGREPORT_NOT_FINISHED_REQUEST_CONSENT
+ : SHARE_REMOTE_BUGREPORT_FINISHED_REQUEST_CONSENT;
+
AlertDialog dialog = new AlertDialog.Builder(this)
- .setTitle(R.string.share_remote_bugreport_dialog_title)
- .setMessage(notificationType
- == DevicePolicyManager.NOTIFICATION_BUGREPORT_STARTED
- ? R.string.share_remote_bugreport_dialog_message
- : R.string.share_remote_bugreport_dialog_message_finished)
+ .setTitle(devicePolicyManager.getString(SHARE_REMOTE_BUGREPORT_DIALOG_TITLE,
+ () -> getString(R.string.share_remote_bugreport_dialog_title)))
+ .setMessage(devicePolicyManager.getString(overrideMessageId,
+ () -> getString(defaultMessageId)))
.setOnDismissListener(new DialogInterface.OnDismissListener() {
@Override
public void onDismiss(DialogInterface dialog) {
diff --git a/src/com/android/settings/TrustedCredentialsSettings.java b/src/com/android/settings/TrustedCredentialsSettings.java
index ae25ba9..fffb8eb 100644
--- a/src/com/android/settings/TrustedCredentialsSettings.java
+++ b/src/com/android/settings/TrustedCredentialsSettings.java
@@ -16,6 +16,8 @@
package com.android.settings;
+import static android.app.admin.DevicePolicyResources.Strings.Settings.PERSONAL_CATEGORY_HEADER;
+import static android.app.admin.DevicePolicyResources.Strings.Settings.WORK_CATEGORY_HEADER;
import static android.widget.LinearLayout.LayoutParams.MATCH_PARENT;
import static android.widget.LinearLayout.LayoutParams.WRAP_CONTENT;
@@ -82,6 +84,7 @@
private static final String TAG = "TrustedCredentialsSettings";
+ private DevicePolicyManager mDevicePolicyManager;
private UserManager mUserManager;
private KeyguardManager mKeyguardManager;
private int mTrustAllCaUserId;
@@ -179,6 +182,7 @@
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
final Activity activity = getActivity();
+ mDevicePolicyManager = activity.getSystemService(DevicePolicyManager.class);
mUserManager = (UserManager) activity.getSystemService(Context.USER_SERVICE);
mKeyguardManager = (KeyguardManager) activity
.getSystemService(Context.KEYGUARD_SERVICE);
@@ -385,9 +389,12 @@
final TextView title = (TextView) convertView.findViewById(android.R.id.title);
if (getUserInfoByGroup(groupPosition).isManagedProfile()) {
- title.setText(R.string.category_work);
+ title.setText(mDevicePolicyManager.getString(WORK_CATEGORY_HEADER,
+ () -> getString(R.string.category_work)));
} else {
- title.setText(R.string.category_personal);
+ title.setText(mDevicePolicyManager.getString(PERSONAL_CATEGORY_HEADER,
+ () -> getString(R.string.category_personal)));
+
}
title.setTextAlignment(View.TEXT_ALIGNMENT_VIEW_END);
diff --git a/src/com/android/settings/accounts/AccountPreferenceController.java b/src/com/android/settings/accounts/AccountPreferenceController.java
index 42b2334..8f387d4 100644
--- a/src/com/android/settings/accounts/AccountPreferenceController.java
+++ b/src/com/android/settings/accounts/AccountPreferenceController.java
@@ -16,6 +16,14 @@
package com.android.settings.accounts;
+import static android.app.admin.DevicePolicyResources.Strings.Settings.ACCESSIBILITY_CATEGORY_PERSONAL;
+import static android.app.admin.DevicePolicyResources.Strings.Settings.ACCESSIBILITY_CATEGORY_WORK;
+import static android.app.admin.DevicePolicyResources.Strings.Settings.MANAGED_BY;
+import static android.app.admin.DevicePolicyResources.Strings.Settings.MANAGED_PROFILE_SETTINGS_TITLE;
+import static android.app.admin.DevicePolicyResources.Strings.Settings.PERSONAL_CATEGORY_HEADER;
+import static android.app.admin.DevicePolicyResources.Strings.Settings.REMOVE_WORK_PROFILE;
+import static android.app.admin.DevicePolicyResources.Strings.Settings.WORK_CATEGORY_HEADER;
+import static android.app.admin.DevicePolicyResources.Strings.Settings.WORK_PROFILE_NOT_AVAILABLE;
import static android.content.Intent.EXTRA_USER;
import static android.os.UserManager.DISALLOW_MODIFY_ACCOUNTS;
import static android.os.UserManager.DISALLOW_REMOVE_MANAGED_PROFILE;
@@ -24,6 +32,7 @@
import android.accounts.Account;
import android.accounts.AccountManager;
+import android.app.admin.DevicePolicyManager;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
@@ -85,6 +94,7 @@
private static final String PREF_KEY_WORK_PROFILE_SETTING = "work_profile_setting";
private UserManager mUm;
+ private DevicePolicyManager mDpm;
private SparseArray<ProfileData> mProfiles = new SparseArray<ProfileData>();
private ManagedProfileBroadcastReceiver mManagedProfileBroadcastReceiver =
new ManagedProfileBroadcastReceiver();
@@ -146,6 +156,7 @@
@ProfileSelectFragment.ProfileType int type) {
super(context);
mUm = (UserManager) context.getSystemService(Context.USER_SERVICE);
+ mDpm = context.getSystemService(DevicePolicyManager.class);
mAuthorities = authorities;
mFragment = parent;
if (mAuthorities != null) {
@@ -188,13 +199,16 @@
UserHandle.myUserId())) {
final SearchIndexableRaw data = new SearchIndexableRaw(mContext);
data.key = PREF_KEY_REMOVE_PROFILE;
- data.title = res.getString(R.string.remove_managed_profile_label);
+ data.title = mDpm.getString(
+ REMOVE_WORK_PROFILE,
+ () -> res.getString(R.string.remove_managed_profile_label));
data.screenTitle = screenTitle;
rawData.add(data);
}
final SearchIndexableRaw data = new SearchIndexableRaw(mContext);
data.key = PREF_KEY_WORK_PROFILE_SETTING;
- data.title = res.getString(R.string.managed_profile_settings_title);
+ data.title = mDpm.getString(MANAGED_PROFILE_SETTINGS_TITLE,
+ () -> res.getString(R.string.managed_profile_settings_title));
data.screenTitle = screenTitle;
rawData.add(data);
}
@@ -253,7 +267,8 @@
new SubSettingLauncher(mContext)
.setSourceMetricsCategory(metricsCategory)
.setDestination(ManagedProfileSettings.class.getName())
- .setTitleRes(R.string.managed_profile_settings_title)
+ .setTitleText(mDpm.getString(MANAGED_PROFILE_SETTINGS_TITLE,
+ () -> mContext.getString(R.string.managed_profile_settings_title)))
.setArguments(arguments)
.launch();
@@ -331,11 +346,15 @@
preferenceGroup.setContentDescription(title);
} else if (userInfo.isManagedProfile()) {
if (mType == ProfileSelectFragment.ProfileType.ALL) {
- preferenceGroup.setTitle(R.string.category_work);
+ preferenceGroup.setTitle(
+ mDpm.getString(WORK_CATEGORY_HEADER,
+ () -> mContext.getString(R.string.category_work)));
final String workGroupSummary = getWorkGroupSummary(context, userInfo);
preferenceGroup.setSummary(workGroupSummary);
preferenceGroup.setContentDescription(
- mContext.getString(R.string.accessibility_category_work, workGroupSummary));
+ mDpm.getString(ACCESSIBILITY_CATEGORY_WORK, () ->
+ mContext.getString(
+ R.string.accessibility_category_work, workGroupSummary)));
}
profileData.removeWorkProfilePreference = newRemoveWorkProfilePreference();
mHelper.enforceRestrictionOnPreference(profileData.removeWorkProfilePreference,
@@ -343,9 +362,12 @@
profileData.managedProfilePreference = newManagedProfileSettings();
} else {
if (mType == ProfileSelectFragment.ProfileType.ALL) {
- preferenceGroup.setTitle(R.string.category_personal);
+ preferenceGroup.setTitle(
+ mDpm.getString(PERSONAL_CATEGORY_HEADER,
+ () -> mContext.getString(R.string.category_personal)));
preferenceGroup.setContentDescription(
- mContext.getString(R.string.accessibility_category_personal));
+ mDpm.getString(ACCESSIBILITY_CATEGORY_PERSONAL, () ->
+ mContext.getString(R.string.accessibility_category_personal)));
}
}
final PreferenceScreen screen = mFragment.getPreferenceScreen();
@@ -378,7 +400,9 @@
RestrictedPreference preference = new RestrictedPreference(
mFragment.getPreferenceManager().getContext());
preference.setKey(PREF_KEY_REMOVE_PROFILE);
- preference.setTitle(R.string.remove_managed_profile_label);
+ preference.setTitle(
+ mDpm.getString(REMOVE_WORK_PROFILE,
+ () -> mContext.getString(R.string.remove_managed_profile_label)));
preference.setIcon(R.drawable.ic_delete);
preference.setOnPreferenceClickListener(this);
preference.setOrder(ORDER_LAST);
@@ -389,7 +413,8 @@
private Preference newManagedProfileSettings() {
Preference preference = new Preference(mFragment.getPreferenceManager().getContext());
preference.setKey(PREF_KEY_WORK_PROFILE_SETTING);
- preference.setTitle(R.string.managed_profile_settings_title);
+ preference.setTitle(mDpm.getString(MANAGED_PROFILE_SETTINGS_TITLE,
+ () -> mContext.getString(R.string.managed_profile_settings_title)));
preference.setIcon(R.drawable.ic_settings_24dp);
preference.setOnPreferenceClickListener(this);
preference.setOrder(ORDER_NEXT_TO_LAST);
@@ -403,7 +428,8 @@
return null;
}
CharSequence appLabel = packageManager.getApplicationLabel(adminApplicationInfo);
- return mContext.getString(R.string.managing_admin, appLabel);
+ return mDpm.getString(MANAGED_BY,
+ () -> mContext.getString(R.string.managing_admin, appLabel), appLabel);
}
void cleanUpPreferences() {
@@ -482,7 +508,9 @@
mProfileNotAvailablePreference.setIcon(R.drawable.empty_icon);
mProfileNotAvailablePreference.setTitle(null);
mProfileNotAvailablePreference.setSummary(
- R.string.managed_profile_not_available_label);
+ mDpm.getString(
+ WORK_PROFILE_NOT_AVAILABLE, () -> mContext.getString(
+ R.string.managed_profile_not_available_label)));
profileData.preferenceGroup.addPreference(mProfileNotAvailablePreference);
}
if (profileData.removeWorkProfilePreference != null) {
diff --git a/src/com/android/settings/accounts/AccountSyncSettings.java b/src/com/android/settings/accounts/AccountSyncSettings.java
index 23b6157..7c72d6c 100644
--- a/src/com/android/settings/accounts/AccountSyncSettings.java
+++ b/src/com/android/settings/accounts/AccountSyncSettings.java
@@ -16,10 +16,14 @@
package com.android.settings.accounts;
+import static android.app.admin.DevicePolicyResources.Strings.Settings.ACCESSIBILITY_PERSONAL_ACCOUNT_TITLE;
+import static android.app.admin.DevicePolicyResources.Strings.Settings.ACCESSIBILITY_WORK_ACCOUNT_TITLE;
+
import android.accounts.Account;
import android.accounts.AccountManager;
import android.app.Activity;
import android.app.Dialog;
+import android.app.admin.DevicePolicyManager;
import android.app.settings.SettingsEnums;
import android.content.ContentResolver;
import android.content.Context;
@@ -154,10 +158,20 @@
UserInfo user = um.getUserInfo(mUserHandle.getIdentifier());
boolean isWorkProfile = user != null ? user.isManagedProfile() : false;
CharSequence currentTitle = getActivity().getTitle();
+
+ DevicePolicyManager devicePolicyManager = getSystemService(DevicePolicyManager.class);
+
String accessibilityTitle =
- getString(isWorkProfile
- ? R.string.accessibility_work_account_title
- : R.string.accessibility_personal_account_title, currentTitle);
+ isWorkProfile
+ ? devicePolicyManager.getString(ACCESSIBILITY_WORK_ACCOUNT_TITLE,
+ () -> getString(R.string.accessibility_work_account_title,
+ currentTitle), currentTitle)
+ : devicePolicyManager.getString(
+ ACCESSIBILITY_PERSONAL_ACCOUNT_TITLE,
+ () -> getString(
+ R.string.accessibility_personal_account_title,
+ currentTitle), currentTitle);
+
getActivity().setTitle(Utils.createAccessibleSequence(currentTitle, accessibilityTitle));
}
diff --git a/src/com/android/settings/accounts/RemoveAccountPreferenceController.java b/src/com/android/settings/accounts/RemoveAccountPreferenceController.java
index 2ce2206..58ef7f1 100644
--- a/src/com/android/settings/accounts/RemoveAccountPreferenceController.java
+++ b/src/com/android/settings/accounts/RemoveAccountPreferenceController.java
@@ -15,12 +15,15 @@
*/
package com.android.settings.accounts;
+import static android.app.admin.DevicePolicyResources.Strings.Settings.REMOVE_ACCOUNT_FAILED_ADMIN_RESTRICTION;
+
import android.accounts.Account;
import android.accounts.AccountManager;
import android.accounts.AuthenticatorException;
import android.accounts.OperationCanceledException;
import android.app.Activity;
import android.app.Dialog;
+import android.app.admin.DevicePolicyManager;
import android.app.settings.SettingsEnums;
import android.content.Context;
import android.content.DialogInterface;
@@ -213,7 +216,9 @@
return new AlertDialog.Builder(context)
.setTitle(R.string.remove_account_label)
- .setMessage(R.string.remove_account_failed)
+ .setMessage(getContext().getSystemService(DevicePolicyManager.class)
+ .getString(REMOVE_ACCOUNT_FAILED_ADMIN_RESTRICTION,
+ () -> getString(R.string.remove_account_failed)))
.setPositiveButton(android.R.string.ok, null)
.create();
}
diff --git a/src/com/android/settings/accounts/WorkModePreferenceController.java b/src/com/android/settings/accounts/WorkModePreferenceController.java
index 11a620b..aa54d33 100644
--- a/src/com/android/settings/accounts/WorkModePreferenceController.java
+++ b/src/com/android/settings/accounts/WorkModePreferenceController.java
@@ -13,6 +13,10 @@
*/
package com.android.settings.accounts;
+import static android.app.admin.DevicePolicyResources.Strings.Settings.WORK_PROFILE_SETTING_OFF_SUMMARY;
+import static android.app.admin.DevicePolicyResources.Strings.Settings.WORK_PROFILE_SETTING_ON_SUMMARY;
+
+import android.app.admin.DevicePolicyManager;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
@@ -40,6 +44,7 @@
private UserManager mUserManager;
private UserHandle mManagedUser;
+ private DevicePolicyManager mDevicePolicyManager;
private Preference mPreference;
private IntentFilter mIntentFilter;
@@ -47,6 +52,7 @@
public WorkModePreferenceController(Context context, String key) {
super(context, key);
mUserManager = (UserManager) context.getSystemService(Context.USER_SERVICE);
+ mDevicePolicyManager = mContext.getSystemService(DevicePolicyManager.class);
mIntentFilter = new IntentFilter();
mIntentFilter.addAction(Intent.ACTION_MANAGED_PROFILE_AVAILABLE);
mIntentFilter.addAction(Intent.ACTION_MANAGED_PROFILE_UNAVAILABLE);
@@ -80,9 +86,15 @@
@Override
public CharSequence getSummary() {
- return mContext.getText(isChecked()
- ? R.string.work_mode_on_summary
- : R.string.work_mode_off_summary);
+ if (isChecked()) {
+ return mDevicePolicyManager
+ .getString(WORK_PROFILE_SETTING_ON_SUMMARY,
+ () -> mContext.getString(R.string.work_mode_on_summary));
+ }
+
+ return mDevicePolicyManager
+ .getString(WORK_PROFILE_SETTING_OFF_SUMMARY,
+ () -> mContext.getString(R.string.work_mode_off_summary));
}
private boolean isChecked() {
diff --git a/src/com/android/settings/applications/AppInfoBase.java b/src/com/android/settings/applications/AppInfoBase.java
index 7104340..0f21097 100644
--- a/src/com/android/settings/applications/AppInfoBase.java
+++ b/src/com/android/settings/applications/AppInfoBase.java
@@ -219,7 +219,7 @@
}
}
- public static void startAppInfoFragment(Class<?> fragment, int titleRes,
+ public static void startAppInfoFragment(Class<?> fragment, String title,
String pkg, int uid, Fragment source, int request, int sourceMetricsCategory) {
final Bundle args = new Bundle();
args.putString(AppInfoBase.ARG_PACKAGE_NAME, pkg);
@@ -228,7 +228,7 @@
new SubSettingLauncher(source.getContext())
.setDestination(fragment.getName())
.setSourceMetricsCategory(sourceMetricsCategory)
- .setTitleRes(titleRes)
+ .setTitleText(title)
.setArguments(args)
.setUserHandle(new UserHandle(UserHandle.getUserId(uid)))
.setResultListener(source, request)
diff --git a/src/com/android/settings/applications/AppsPreferenceController.java b/src/com/android/settings/applications/AppsPreferenceController.java
index 9fbd5c1..fad513e 100644
--- a/src/com/android/settings/applications/AppsPreferenceController.java
+++ b/src/com/android/settings/applications/AppsPreferenceController.java
@@ -211,7 +211,8 @@
pref.setOrder(showAppsCount++);
pref.setOnPreferenceClickListener(preference -> {
AppInfoBase.startAppInfoFragment(AppInfoDashboardFragment.class,
- R.string.application_info_label, pkgName, appEntry.info.uid,
+ mContext.getString(R.string.application_info_label),
+ pkgName, appEntry.info.uid,
mHost, 1001 /*RequestCode*/, getMetricsCategory());
return true;
});
diff --git a/src/com/android/settings/applications/UsageAccessDetails.java b/src/com/android/settings/applications/UsageAccessDetails.java
index 4681fd8..ef259d2 100644
--- a/src/com/android/settings/applications/UsageAccessDetails.java
+++ b/src/com/android/settings/applications/UsageAccessDetails.java
@@ -17,6 +17,7 @@
import static android.app.AppOpsManager.OP_GET_USAGE_STATS;
import static android.app.AppOpsManager.OP_LOADER_USAGE_STATS;
+import static android.app.admin.DevicePolicyResources.Strings.Settings.WORK_PROFILE_DISABLE_USAGE_ACCESS_WARNING;
import android.Manifest;
import android.app.AppOpsManager;
@@ -96,7 +97,8 @@
new AlertDialog.Builder(getContext())
.setIcon(com.android.internal.R.drawable.ic_dialog_alert_material)
.setTitle(android.R.string.dialog_alert_title)
- .setMessage(R.string.work_profile_usage_access_warning)
+ .setMessage(mDpm.getString(WORK_PROFILE_DISABLE_USAGE_ACCESS_WARNING,
+ () -> getString(R.string.work_profile_usage_access_warning)))
.setPositiveButton(R.string.okay, null)
.show();
}
diff --git a/src/com/android/settings/applications/manageapplications/ManageApplications.java b/src/com/android/settings/applications/manageapplications/ManageApplications.java
index 01bc2f1..93b7c10 100644
--- a/src/com/android/settings/applications/manageapplications/ManageApplications.java
+++ b/src/com/android/settings/applications/manageapplications/ManageApplications.java
@@ -645,8 +645,8 @@
}
private void startAppInfoFragment(Class<?> fragment, int titleRes) {
- AppInfoBase.startAppInfoFragment(fragment, titleRes, mCurrentPkgName, mCurrentUid, this,
- INSTALLED_APP_DETAILS, getMetricsCategory());
+ AppInfoBase.startAppInfoFragment(fragment, getString(titleRes), mCurrentPkgName,
+ mCurrentUid, this, INSTALLED_APP_DETAILS, getMetricsCategory());
}
@Override
diff --git a/src/com/android/settings/applications/managedomainurls/DomainAppPreferenceController.java b/src/com/android/settings/applications/managedomainurls/DomainAppPreferenceController.java
index 07c4858..eae1d06 100644
--- a/src/com/android/settings/applications/managedomainurls/DomainAppPreferenceController.java
+++ b/src/com/android/settings/applications/managedomainurls/DomainAppPreferenceController.java
@@ -70,7 +70,8 @@
public boolean handlePreferenceTreeClick(Preference preference) {
if (preference instanceof DomainAppPreference) {
ApplicationsState.AppEntry entry = ((DomainAppPreference) preference).getEntry();
- AppInfoBase.startAppInfoFragment(AppLaunchSettings.class, R.string.auto_launch_label,
+ AppInfoBase.startAppInfoFragment(AppLaunchSettings.class,
+ mContext.getString(R.string.auto_launch_label),
entry.info.packageName, entry.info.uid, mFragment,
INSTALLED_APP_DETAILS, mMetricsCategory);
return true;
diff --git a/src/com/android/settings/applications/specialaccess/deviceadmin/DeviceAdminAdd.java b/src/com/android/settings/applications/specialaccess/deviceadmin/DeviceAdminAdd.java
index 7b2f4ba..e133c62 100644
--- a/src/com/android/settings/applications/specialaccess/deviceadmin/DeviceAdminAdd.java
+++ b/src/com/android/settings/applications/specialaccess/deviceadmin/DeviceAdminAdd.java
@@ -17,6 +17,18 @@
package com.android.settings.applications.specialaccess.deviceadmin;
import static android.app.admin.DevicePolicyManager.DEVICE_OWNER_TYPE_FINANCED;
+import static android.app.admin.DevicePolicyResources.Strings.Settings.ACTIVATE_DEVICE_ADMIN_APP;
+import static android.app.admin.DevicePolicyResources.Strings.Settings.ACTIVATE_THIS_DEVICE_ADMIN_APP;
+import static android.app.admin.DevicePolicyResources.Strings.Settings.ACTIVE_DEVICE_ADMIN_WARNING;
+import static android.app.admin.DevicePolicyResources.Strings.Settings.DEVICE_ADMIN_POLICIES_WARNING;
+import static android.app.admin.DevicePolicyResources.Strings.Settings.NEW_DEVICE_ADMIN_WARNING;
+import static android.app.admin.DevicePolicyResources.Strings.Settings.NEW_DEVICE_ADMIN_WARNING_SIMPLIFIED;
+import static android.app.admin.DevicePolicyResources.Strings.Settings.REMOVE_AND_UNINSTALL_DEVICE_ADMIN;
+import static android.app.admin.DevicePolicyResources.Strings.Settings.REMOVE_DEVICE_ADMIN;
+import static android.app.admin.DevicePolicyResources.Strings.Settings.REMOVE_WORK_PROFILE;
+import static android.app.admin.DevicePolicyResources.Strings.Settings.SET_PROFILE_OWNER_DIALOG_TITLE;
+import static android.app.admin.DevicePolicyResources.Strings.Settings.USER_ADMIN_POLICIES_WARNING;
+import static android.app.admin.DevicePolicyResources.Strings.Settings.WORK_PROFILE_ADMIN_POLICIES_WARNING;
import android.app.Activity;
import android.app.ActivityManager;
@@ -318,7 +330,8 @@
// Build and show the simplified dialog
final Dialog dialog = new AlertDialog.Builder(this)
- .setTitle(getText(R.string.profile_owner_add_title_simplified))
+ .setTitle(mDPM.getString(SET_PROFILE_OWNER_DIALOG_TITLE,
+ () -> getString(R.string.profile_owner_add_title_simplified)))
.setView(R.layout.profile_owner_add)
.setPositiveButton(R.string.allow, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
@@ -339,8 +352,10 @@
mAddMsg = dialog.findViewById(R.id.add_msg_simplified);
mAddMsg.setText(mAddMsgText);
mAdminWarning = dialog.findViewById(R.id.admin_warning_simplified);
- mAdminWarning.setText(getString(R.string.device_admin_warning_simplified,
- mProfileOwnerName));
+ mAdminWarning.setText(
+ mDPM.getString(NEW_DEVICE_ADMIN_WARNING_SIMPLIFIED, () ->
+ getString(R.string.device_admin_warning_simplified,
+ mProfileOwnerName), mProfileOwnerName));
return;
}
setContentView(R.layout.device_admin_add);
@@ -655,8 +670,10 @@
final boolean isManagedProfile = isManagedProfile(mDeviceAdmin);
if (isProfileOwner && isManagedProfile) {
// Profile owner in a managed profile, user can remove profile to disable admin.
- mAdminWarning.setText(R.string.admin_profile_owner_message);
- mActionButton.setText(R.string.remove_managed_profile_label);
+ mAdminWarning.setText(mDPM.getString(WORK_PROFILE_ADMIN_POLICIES_WARNING,
+ () -> getString(R.string.admin_profile_owner_message)));
+ mActionButton.setText(mDPM.getString(REMOVE_WORK_PROFILE,
+ () -> getString(R.string.remove_managed_profile_label)));
final EnforcedAdmin admin = getAdminEnforcingCantRemoveProfile();
final boolean hasBaseRestriction = hasBaseCantRemoveProfileRestriction();
@@ -670,27 +687,33 @@
// Profile owner in a user or device owner, user can't disable admin.
if (isProfileOwner) {
// Show profile owner in a user description.
- mAdminWarning.setText(R.string.admin_profile_owner_user_message);
+ mAdminWarning.setText(mDPM.getString(USER_ADMIN_POLICIES_WARNING,
+ () -> getString(R.string.admin_profile_owner_user_message)));
} else {
// Show device owner description.
if (isFinancedDevice()) {
mAdminWarning.setText(R.string.admin_financed_message);
} else {
- mAdminWarning.setText(R.string.admin_device_owner_message);
+ mAdminWarning.setText(mDPM.getString(DEVICE_ADMIN_POLICIES_WARNING,
+ () -> getString(R.string.admin_device_owner_message)));
}
}
- mActionButton.setText(R.string.remove_device_admin);
+ mActionButton.setText(mDPM.getString(REMOVE_DEVICE_ADMIN,
+ () -> getString(R.string.remove_device_admin)));
mActionButton.setEnabled(false);
} else {
addDeviceAdminPolicies(false /* showDescription */);
- mAdminWarning.setText(getString(R.string.device_admin_status,
- mDeviceAdmin.getActivityInfo().applicationInfo.loadLabel(
- getPackageManager())));
+ CharSequence label = mDeviceAdmin.getActivityInfo().applicationInfo.loadLabel(
+ getPackageManager());
+ mAdminWarning.setText(mDPM.getString(ACTIVE_DEVICE_ADMIN_WARNING,
+ () -> getString(R.string.device_admin_status, label), label));
setTitle(R.string.active_device_admin_msg);
if (mUninstalling) {
- mActionButton.setText(R.string.remove_and_uninstall_device_admin);
+ mActionButton.setText(mDPM.getString(REMOVE_AND_UNINSTALL_DEVICE_ADMIN,
+ () -> getString(R.string.remove_and_uninstall_device_admin)));
} else {
- mActionButton.setText(R.string.remove_device_admin);
+ mActionButton.setText(mDPM.getString(REMOVE_DEVICE_ADMIN,
+ () -> getString(R.string.remove_device_admin)));
}
}
CharSequence supportMessage = mDPM.getLongSupportMessageForUser(
@@ -703,10 +726,16 @@
}
} else {
addDeviceAdminPolicies(true /* showDescription */);
- mAdminWarning.setText(getString(R.string.device_admin_warning,
- mDeviceAdmin.getActivityInfo().applicationInfo.loadLabel(getPackageManager())));
- setTitle(getText(R.string.add_device_admin_msg));
- mActionButton.setText(getText(R.string.add_device_admin));
+ CharSequence label = mDeviceAdmin.getActivityInfo()
+ .applicationInfo.loadLabel(getPackageManager());
+ mAdminWarning.setText(
+ mDPM.getString(NEW_DEVICE_ADMIN_WARNING, () ->
+ getString(R.string.device_admin_warning, label
+ ), label));
+ setTitle(mDPM.getString(ACTIVATE_DEVICE_ADMIN_APP,
+ () -> getString(R.string.add_device_admin_msg)));
+ mActionButton.setText(mDPM.getString(ACTIVATE_THIS_DEVICE_ADMIN_APP,
+ () -> getString(R.string.add_device_admin)));
if (isAdminUninstallable()) {
mUninstallButton.setVisibility(View.VISIBLE);
}
diff --git a/src/com/android/settings/applications/specialaccess/interactacrossprofiles/InteractAcrossProfilesDetails.java b/src/com/android/settings/applications/specialaccess/interactacrossprofiles/InteractAcrossProfilesDetails.java
index 61af4f6..4e96aa3 100644
--- a/src/com/android/settings/applications/specialaccess/interactacrossprofiles/InteractAcrossProfilesDetails.java
+++ b/src/com/android/settings/applications/specialaccess/interactacrossprofiles/InteractAcrossProfilesDetails.java
@@ -15,6 +15,11 @@
*/
package com.android.settings.applications.specialaccess.interactacrossprofiles;
+import static android.app.admin.DevicePolicyResources.Strings.Settings.APP_CAN_ACCESS_PERSONAL_DATA;
+import static android.app.admin.DevicePolicyResources.Strings.Settings.APP_CAN_ACCESS_PERSONAL_PERMISSIONS;
+import static android.app.admin.DevicePolicyResources.Strings.Settings.CONNECT_APPS_DIALOG_TITLE;
+import static android.app.admin.DevicePolicyResources.Strings.Settings.INSTALL_IN_PERSONAL_PROFILE_TO_CONNECT_PROMPT;
+import static android.app.admin.DevicePolicyResources.Strings.Settings.INSTALL_IN_WORK_PROFILE_TO_CONNECT_PROMPT;
import static android.content.pm.PackageManager.MATCH_DIRECT_BOOT_AWARE;
import static android.content.pm.PackageManager.MATCH_DIRECT_BOOT_UNAWARE;
import static android.provider.Settings.ACTION_MANAGE_CROSS_PROFILE_ACCESS;
@@ -258,16 +263,22 @@
final TextView dialogTitle = dialogView.findViewById(
R.id.interact_across_profiles_consent_dialog_title);
- dialogTitle.setText(
- getString(R.string.interact_across_profiles_consent_dialog_title, mAppLabel));
+ dialogTitle.setText(mDpm.getString(CONNECT_APPS_DIALOG_TITLE, () ->
+ getString(R.string.interact_across_profiles_consent_dialog_title, mAppLabel)));
final TextView appDataSummary = dialogView.findViewById(R.id.app_data_summary);
- appDataSummary.setText(getString(
- R.string.interact_across_profiles_consent_dialog_app_data_summary, mAppLabel));
+ appDataSummary.setText(
+ mDpm.getString(APP_CAN_ACCESS_PERSONAL_DATA,
+ () -> getString(
+ R.string.interact_across_profiles_consent_dialog_app_data_summary,
+ mAppLabel), mAppLabel));
final TextView permissionsSummary = dialogView.findViewById(R.id.permissions_summary);
- permissionsSummary.setText(getString(
- R.string.interact_across_profiles_consent_dialog_permissions_summary, mAppLabel));
+ permissionsSummary.setText(mDpm.getString(APP_CAN_ACCESS_PERSONAL_PERMISSIONS,
+ () -> getString(
+ R.string.interact_across_profiles_consent_dialog_permissions_summary,
+ mAppLabel),
+ mAppLabel));
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
builder.setView(dialogView)
@@ -393,9 +404,12 @@
return false;
}
if (!mInstalledInPersonal) {
- mInstallBanner.setTitle(getString(
- R.string.interact_across_profiles_install_personal_app_title,
- mAppLabel));
+ mInstallBanner.setTitle(
+ mDpm.getString(INSTALL_IN_PERSONAL_PROFILE_TO_CONNECT_PROMPT,
+ () -> getString(
+ R.string.interact_across_profiles_install_personal_app_title,
+ mAppLabel),
+ mAppLabel));
if (mInstallAppIntent != null) {
mInstallBanner.setSummary(
R.string.interact_across_profiles_install_app_summary);
@@ -404,9 +418,12 @@
return true;
}
if (!mInstalledInWork) {
- mInstallBanner.setTitle(getString(
- R.string.interact_across_profiles_install_work_app_title,
- mAppLabel));
+ mInstallBanner.setTitle(
+ mDpm.getString(INSTALL_IN_WORK_PROFILE_TO_CONNECT_PROMPT,
+ () -> getString(
+ R.string.interact_across_profiles_install_work_app_title,
+ mAppLabel),
+ mAppLabel));
if (mInstallAppIntent != null) {
mInstallBanner.setSummary(
R.string.interact_across_profiles_install_app_summary);
diff --git a/src/com/android/settings/applications/specialaccess/interactacrossprofiles/InteractAcrossProfilesSettings.java b/src/com/android/settings/applications/specialaccess/interactacrossprofiles/InteractAcrossProfilesSettings.java
index ffab617..05ec3e9 100644
--- a/src/com/android/settings/applications/specialaccess/interactacrossprofiles/InteractAcrossProfilesSettings.java
+++ b/src/com/android/settings/applications/specialaccess/interactacrossprofiles/InteractAcrossProfilesSettings.java
@@ -15,9 +15,11 @@
*/
package com.android.settings.applications.specialaccess.interactacrossprofiles;
+import static android.app.admin.DevicePolicyResources.Strings.Settings.CONNECTED_WORK_AND_PERSONAL_APPS_TITLE;
import static android.content.pm.PackageManager.GET_ACTIVITIES;
import android.annotation.Nullable;
+import android.app.admin.DevicePolicyManager;
import android.app.settings.SettingsEnums;
import android.content.Context;
import android.content.pm.ApplicationInfo;
@@ -51,6 +53,7 @@
private Context mContext;
private PackageManager mPackageManager;
private UserManager mUserManager;
+ private DevicePolicyManager mDevicePolicyManager;
private CrossProfileApps mCrossProfileApps;
private IconDrawableFactory mIconDrawableFactory;
@@ -63,6 +66,7 @@
mUserManager = mContext.getSystemService(UserManager.class);
mIconDrawableFactory = IconDrawableFactory.newInstance(mContext);
mCrossProfileApps = mContext.getSystemService(CrossProfileApps.class);
+ mDevicePolicyManager = mContext.getSystemService(DevicePolicyManager.class);
}
@Override
@@ -91,7 +95,8 @@
@Override
public boolean onPreferenceClick(Preference preference) {
AppInfoBase.startAppInfoFragment(InteractAcrossProfilesDetails.class,
- R.string.interact_across_profiles_title,
+ mDevicePolicyManager.getString(CONNECTED_WORK_AND_PERSONAL_APPS_TITLE,
+ () -> getString(R.string.interact_across_profiles_title)),
packageName,
appInfo.uid,
InteractAcrossProfilesSettings.this/* source */,
diff --git a/src/com/android/settings/applications/specialaccess/pictureinpicture/PictureInPictureSettings.java b/src/com/android/settings/applications/specialaccess/pictureinpicture/PictureInPictureSettings.java
index 57b7412..d794de6 100644
--- a/src/com/android/settings/applications/specialaccess/pictureinpicture/PictureInPictureSettings.java
+++ b/src/com/android/settings/applications/specialaccess/pictureinpicture/PictureInPictureSettings.java
@@ -168,7 +168,8 @@
@Override
public boolean onPreferenceClick(Preference preference) {
AppInfoBase.startAppInfoFragment(PictureInPictureDetails.class,
- R.string.picture_in_picture_app_detail_title, packageName, appInfo.uid,
+ getString(R.string.picture_in_picture_app_detail_title),
+ packageName, appInfo.uid,
PictureInPictureSettings.this, -1, getMetricsCategory());
return true;
}
diff --git a/src/com/android/settings/biometrics/BiometricEnrollIntroduction.java b/src/com/android/settings/biometrics/BiometricEnrollIntroduction.java
index 7f3bc87..5085172 100644
--- a/src/com/android/settings/biometrics/BiometricEnrollIntroduction.java
+++ b/src/com/android/settings/biometrics/BiometricEnrollIntroduction.java
@@ -88,9 +88,9 @@
protected abstract int getHeaderResDefault();
/**
- * @return the description resource for if the biometric has been disabled by a device admin
+ * @return the description for if the biometric has been disabled by a device admin
*/
- protected abstract int getDescriptionResDisabledByAdmin();
+ protected abstract String getDescriptionDisabledByAdmin();
/**
* @return the cancel button
@@ -414,7 +414,7 @@
super.initViews();
if (mBiometricUnlockDisabledByAdmin && !mParentalConsentRequired) {
- setDescriptionText(getDescriptionResDisabledByAdmin());
+ setDescriptionText(getDescriptionDisabledByAdmin());
}
}
diff --git a/src/com/android/settings/biometrics/face/FaceEnrollIntroduction.java b/src/com/android/settings/biometrics/face/FaceEnrollIntroduction.java
index eadb5b8..b622c1c 100644
--- a/src/com/android/settings/biometrics/face/FaceEnrollIntroduction.java
+++ b/src/com/android/settings/biometrics/face/FaceEnrollIntroduction.java
@@ -16,6 +16,8 @@
package com.android.settings.biometrics.face;
+import static android.app.admin.DevicePolicyResources.Strings.Settings.FACE_UNLOCK_DISABLED;
+
import android.app.admin.DevicePolicyManager;
import android.app.settings.SettingsEnums;
import android.content.Intent;
@@ -221,8 +223,11 @@
}
@Override
- protected int getDescriptionResDisabledByAdmin() {
- return R.string.security_settings_face_enroll_introduction_message_unlock_disabled;
+ protected String getDescriptionDisabledByAdmin() {
+ DevicePolicyManager devicePolicyManager = getSystemService(DevicePolicyManager.class);
+ return devicePolicyManager.getString(
+ FACE_UNLOCK_DISABLED,
+ () -> getString(R.string.security_settings_face_enroll_introduction_message_unlock_disabled));
}
@Override
diff --git a/src/com/android/settings/biometrics/face/FaceProfileStatusPreferenceController.java b/src/com/android/settings/biometrics/face/FaceProfileStatusPreferenceController.java
index 49f128c..abfd3a2 100644
--- a/src/com/android/settings/biometrics/face/FaceProfileStatusPreferenceController.java
+++ b/src/com/android/settings/biometrics/face/FaceProfileStatusPreferenceController.java
@@ -16,6 +16,9 @@
package com.android.settings.biometrics.face;
+import static android.app.admin.DevicePolicyResources.Strings.Settings.FACE_SETTINGS_FOR_WORK_TITLE;
+
+import android.app.admin.DevicePolicyManager;
import android.content.Context;
import android.os.UserHandle;
@@ -27,21 +30,26 @@
public class FaceProfileStatusPreferenceController extends FaceStatusPreferenceController {
private static final String KEY_FACE_SETTINGS = "face_settings_profile";
+ private final DevicePolicyManager mDevicePolicyManager;
public FaceProfileStatusPreferenceController(Context context) {
super(context, KEY_FACE_SETTINGS);
+ mDevicePolicyManager = context.getSystemService(DevicePolicyManager.class);
}
public FaceProfileStatusPreferenceController(Context context, String key) {
super(context, key);
+ mDevicePolicyManager = context.getSystemService(DevicePolicyManager.class);
}
public FaceProfileStatusPreferenceController(Context context, Lifecycle lifecycle) {
super(context, KEY_FACE_SETTINGS, lifecycle);
+ mDevicePolicyManager = context.getSystemService(DevicePolicyManager.class);
}
public FaceProfileStatusPreferenceController(Context context, String key, Lifecycle lifecycle) {
super(context, key, lifecycle);
+ mDevicePolicyManager = context.getSystemService(DevicePolicyManager.class);
}
@Override
@@ -70,7 +78,10 @@
@Override
public void updateState(Preference preference) {
super.updateState(preference);
- preference.setTitle(mContext.getResources().getString(
- R.string.security_settings_face_profile_preference_title));
+
+ preference.setTitle(
+ mDevicePolicyManager.getString(FACE_SETTINGS_FOR_WORK_TITLE, () ->
+ mContext.getResources().getString(
+ R.string.security_settings_face_profile_preference_title)));
}
}
diff --git a/src/com/android/settings/biometrics/face/FaceSettings.java b/src/com/android/settings/biometrics/face/FaceSettings.java
index 62347ac..f3a7f2c 100644
--- a/src/com/android/settings/biometrics/face/FaceSettings.java
+++ b/src/com/android/settings/biometrics/face/FaceSettings.java
@@ -17,12 +17,14 @@
package com.android.settings.biometrics.face;
import static android.app.Activity.RESULT_OK;
+import static android.app.admin.DevicePolicyResources.Strings.Settings.FACE_SETTINGS_FOR_WORK_TITLE;
import static com.android.settings.biometrics.BiometricEnrollBase.CONFIRM_REQUEST;
import static com.android.settings.biometrics.BiometricEnrollBase.ENROLL_REQUEST;
import static com.android.settings.biometrics.BiometricEnrollBase.RESULT_FINISHED;
import static com.android.settings.biometrics.BiometricEnrollBase.RESULT_TIMEOUT;
+import android.app.admin.DevicePolicyManager;
import android.app.settings.SettingsEnums;
import android.content.Context;
import android.content.Intent;
@@ -66,6 +68,7 @@
private UserManager mUserManager;
private FaceManager mFaceManager;
+ private DevicePolicyManager mDevicePolicyManager;
private int mUserId;
private int mSensorId;
private long mChallenge;
@@ -148,6 +151,7 @@
mUserManager = context.getSystemService(UserManager.class);
mFaceManager = context.getSystemService(FaceManager.class);
+ mDevicePolicyManager = context.getSystemService(DevicePolicyManager.class);
mToken = getIntent().getByteArrayExtra(KEY_TOKEN);
mSensorId = getIntent().getIntExtra(BiometricEnrollBase.EXTRA_KEY_SENSOR_ID, -1);
mChallenge = getIntent().getLongExtra(BiometricEnrollBase.EXTRA_KEY_CHALLENGE, 0L);
@@ -157,8 +161,10 @@
mFaceFeatureProvider = FeatureFactory.getFactory(getContext()).getFaceFeatureProvider();
if (mUserManager.getUserInfo(mUserId).isManagedProfile()) {
- getActivity().setTitle(getActivity().getResources().getString(
- R.string.security_settings_face_profile_preference_title));
+ getActivity().setTitle(
+ mDevicePolicyManager.getString(FACE_SETTINGS_FOR_WORK_TITLE, () ->
+ getActivity().getResources().getString(
+ R.string.security_settings_face_profile_preference_title)));
}
mLockscreenController = Utils.isMultipleBiometricsSupported(context)
diff --git a/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollIntroduction.java b/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollIntroduction.java
index f70a663..2ef5446 100644
--- a/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollIntroduction.java
+++ b/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollIntroduction.java
@@ -16,6 +16,8 @@
package com.android.settings.biometrics.fingerprint;
+import static android.app.admin.DevicePolicyResources.Strings.Settings.FINGERPRINT_UNLOCK_DISABLED;
+
import android.app.admin.DevicePolicyManager;
import android.app.settings.SettingsEnums;
import android.content.ActivityNotFoundException;
@@ -57,6 +59,8 @@
@Nullable private FooterButton mPrimaryFooterButton;
@Nullable private FooterButton mSecondaryFooterButton;
+ private DevicePolicyManager mDevicePolicyManager;
+
@Override
protected void onCreate(Bundle savedInstanceState) {
mFingerprintManager = Utils.getFingerprintManagerOrNull(this);
@@ -68,6 +72,8 @@
super.onCreate(savedInstanceState);
+ mDevicePolicyManager = getSystemService(DevicePolicyManager.class);
+
final ImageView iconFingerprint = findViewById(R.id.icon_fingerprint);
final ImageView iconDeviceLocked = findViewById(R.id.icon_device_locked);
final ImageView iconTrashCan = findViewById(R.id.icon_trash_can);
@@ -177,8 +183,10 @@
}
@Override
- protected int getDescriptionResDisabledByAdmin() {
- return R.string.security_settings_fingerprint_enroll_introduction_message_unlock_disabled;
+ protected String getDescriptionDisabledByAdmin() {
+ return mDevicePolicyManager.getString(
+ FINGERPRINT_UNLOCK_DISABLED,
+ () -> getString(R.string.security_settings_fingerprint_enroll_introduction_message_unlock_disabled));
}
@Override
diff --git a/src/com/android/settings/biometrics/fingerprint/FingerprintSettings.java b/src/com/android/settings/biometrics/fingerprint/FingerprintSettings.java
index 87a29b2..50e1780 100644
--- a/src/com/android/settings/biometrics/fingerprint/FingerprintSettings.java
+++ b/src/com/android/settings/biometrics/fingerprint/FingerprintSettings.java
@@ -17,6 +17,10 @@
package com.android.settings.biometrics.fingerprint;
+import static android.app.admin.DevicePolicyResources.Strings.UNDEFINED;
+import static android.app.admin.DevicePolicyResources.Strings.Settings.FINGERPRINT_UNLOCK_DISABLED_EXPLANATION;
+import static android.app.admin.DevicePolicyResources.Strings.Settings.WORK_PROFILE_FINGERPRINT_LAST_DELETE_MESSAGE;
+
import static com.android.settings.Utils.SETTINGS_PACKAGE_NAME;
import android.app.Activity;
@@ -356,11 +360,22 @@
activity, getString(getHelpResource()), activity.getClass().getName());
final AnnotationSpan.LinkInfo linkInfo = new AnnotationSpan.LinkInfo(
activity, ANNOTATION_URL, helpIntent);
- mFooterTitle = AnnotationSpan.linkify(getText(admin != null
- ? R.string
- .security_settings_fingerprint_enroll_disclaimer_lockscreen_disabled
- : R.string.security_settings_fingerprint_v2_home_screen),
- linkInfo, adminLinkInfo);
+
+ if (admin != null) {
+ DevicePolicyManager devicePolicyManager =
+ getSystemService(DevicePolicyManager.class);
+ String footerText = devicePolicyManager.getString(
+ FINGERPRINT_UNLOCK_DISABLED_EXPLANATION,
+ () -> getString(R.string.security_settings_fingerprint_enroll_disclaimer_lockscreen_disabled));
+
+ mFooterTitle = AnnotationSpan.linkify(footerText, linkInfo, adminLinkInfo);
+ } else {
+ mFooterTitle = AnnotationSpan.linkify(
+ getText(R.string.security_settings_fingerprint_v2_home_screen),
+ linkInfo, adminLinkInfo);
+ }
+
+
}
private boolean isUdfps() {
@@ -917,11 +932,20 @@
mFp = getArguments().getParcelable("fingerprint");
final boolean isProfileChallengeUser =
getArguments().getBoolean("isProfileChallengeUser");
+
+ DevicePolicyManager devicePolicyManager =
+ getContext().getSystemService(DevicePolicyManager.class);
+ String messageId =
+ isProfileChallengeUser ? WORK_PROFILE_FINGERPRINT_LAST_DELETE_MESSAGE
+ : UNDEFINED;
+ int defaultMessageId = isProfileChallengeUser
+ ? R.string.fingerprint_last_delete_message_profile_challenge
+ : R.string.fingerprint_last_delete_message;
+
final AlertDialog alertDialog = new AlertDialog.Builder(getActivity())
.setTitle(R.string.fingerprint_last_delete_title)
- .setMessage((isProfileChallengeUser)
- ? R.string.fingerprint_last_delete_message_profile_challenge
- : R.string.fingerprint_last_delete_message)
+ .setMessage(devicePolicyManager.getString(
+ messageId, () -> getContext().getString(defaultMessageId)))
.setPositiveButton(R.string.fingerprint_last_delete_confirm,
new DialogInterface.OnClickListener() {
@Override
diff --git a/src/com/android/settings/bugreporthandler/BugReportHandlerPicker.java b/src/com/android/settings/bugreporthandler/BugReportHandlerPicker.java
index 9e1941a..25b15c7 100644
--- a/src/com/android/settings/bugreporthandler/BugReportHandlerPicker.java
+++ b/src/com/android/settings/bugreporthandler/BugReportHandlerPicker.java
@@ -16,9 +16,12 @@
package com.android.settings.bugreporthandler;
+import static android.app.admin.DevicePolicyResources.Strings.Settings.PERSONAL_PROFILE_APP_SUBTEXT;
+import static android.app.admin.DevicePolicyResources.Strings.Settings.WORK_PROFILE_APP_SUBTEXT;
import static android.provider.Settings.ACTION_BUGREPORT_HANDLER_SETTINGS;
import android.app.Activity;
+import android.app.admin.DevicePolicyManager;
import android.app.settings.SettingsEnums;
import android.content.Context;
import android.content.Intent;
@@ -189,10 +192,15 @@
return "";
}
final UserInfo userInfo = mUserManager.getUserInfo(handlerUser);
+ DevicePolicyManager devicePolicyManager =
+ context.getSystemService(DevicePolicyManager.class);
+
if (userInfo != null && userInfo.isManagedProfile()) {
- return context.getString(R.string.work_profile_app_subtext);
+ return devicePolicyManager.getString(WORK_PROFILE_APP_SUBTEXT,
+ () -> context.getString(R.string.work_profile_app_subtext));
}
- return context.getString(R.string.personal_profile_app_subtext);
+ return devicePolicyManager.getString(PERSONAL_PROFILE_APP_SUBTEXT,
+ () -> context.getString(R.string.personal_profile_app_subtext));
}
private static class BugreportHandlerAppInfo extends DefaultAppInfo {
diff --git a/src/com/android/settings/dashboard/profileselector/ProfileSelectFragment.java b/src/com/android/settings/dashboard/profileselector/ProfileSelectFragment.java
index 3b64d3d..f7a309e 100644
--- a/src/com/android/settings/dashboard/profileselector/ProfileSelectFragment.java
+++ b/src/com/android/settings/dashboard/profileselector/ProfileSelectFragment.java
@@ -16,10 +16,13 @@
package com.android.settings.dashboard.profileselector;
+import static android.app.admin.DevicePolicyResources.Strings.Settings.PERSONAL_CATEGORY_HEADER;
+import static android.app.admin.DevicePolicyResources.Strings.Settings.WORK_CATEGORY_HEADER;
import static android.content.Intent.EXTRA_USER_ID;
import android.annotation.IntDef;
import android.app.Activity;
+import android.app.admin.DevicePolicyManager;
import android.content.Context;
import android.content.res.ColorStateList;
import android.os.Bundle;
@@ -96,9 +99,6 @@
* Used in fragment argument with Extra key {@link SettingsActivity.EXTRA_SHOW_FRAGMENT_TAB}
*/
public static final int WORK_TAB = 1;
- private static final int[] LABEL = {
- R.string.category_personal, R.string.category_work
- };
private ViewGroup mContentView;
@@ -233,14 +233,23 @@
@Override
public CharSequence getPageTitle(int position) {
- return mContext.getString(LABEL[convertPosition(position)]);
+ DevicePolicyManager devicePolicyManager =
+ mContext.getSystemService(DevicePolicyManager.class);
+
+ if (convertPosition(position) == WORK_TAB) {
+ return devicePolicyManager.getString(WORK_CATEGORY_HEADER,
+ () -> mContext.getString(R.string.category_work));
+ }
+
+ return devicePolicyManager.getString(PERSONAL_CATEGORY_HEADER,
+ () -> mContext.getString(R.string.category_personal));
}
}
private static int convertPosition(int index) {
if (TextUtils.getLayoutDirectionFromLocale(Locale.getDefault())
== View.LAYOUT_DIRECTION_RTL) {
- return LABEL.length - 1 - index;
+ return 1 - index;
}
return index;
}
diff --git a/src/com/android/settings/dashboard/profileselector/UserAdapter.java b/src/com/android/settings/dashboard/profileselector/UserAdapter.java
index 0b3a7fc..7057961 100644
--- a/src/com/android/settings/dashboard/profileselector/UserAdapter.java
+++ b/src/com/android/settings/dashboard/profileselector/UserAdapter.java
@@ -16,7 +16,12 @@
package com.android.settings.dashboard.profileselector;
+import static android.app.admin.DevicePolicyResources.Strings.Settings.PERSONAL_CATEGORY_HEADER;
+import static android.app.admin.DevicePolicyResources.Strings.Settings.WORK_CATEGORY_HEADER;
+import static android.app.admin.DevicePolicyResources.Strings.Settings.WORK_PROFILE_USER_LABEL;
+
import android.app.ActivityManager;
+import android.app.admin.DevicePolicyManager;
import android.content.Context;
import android.content.pm.UserInfo;
import android.database.DataSetObserver;
@@ -54,7 +59,9 @@
UserInfo userInfo = um.getUserInfo(mUserHandle.getIdentifier());
Drawable icon;
if (userInfo.isManagedProfile()) {
- mName = context.getString(R.string.managed_user_title);
+ mName = context.getSystemService(DevicePolicyManager.class).getString(
+ WORK_PROFILE_USER_LABEL,
+ () -> context.getString(R.string.managed_user_title));
icon = context.getPackageManager().getUserBadgeForDensityNoBackground(
userHandle, /* density= */ 0);
} else {
@@ -77,14 +84,18 @@
}
private ArrayList<UserDetails> data;
+ private final Context mContext;
private final LayoutInflater mInflater;
+ private final DevicePolicyManager mDevicePolicyManager;
public UserAdapter(Context context, ArrayList<UserDetails> users) {
if (users == null) {
throw new IllegalArgumentException("A list of user details must be provided");
}
+ mContext = context;
this.data = users;
mInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
+ mDevicePolicyManager = context.getSystemService(DevicePolicyManager.class);
}
public UserHandle getUserHandle(int position) {
@@ -104,13 +115,15 @@
return row;
}
- private int getTitle(UserDetails user) {
+ private String getTitle(UserDetails user) {
int userHandle = user.mUserHandle.getIdentifier();
if (userHandle == UserHandle.USER_CURRENT
|| userHandle == ActivityManager.getCurrentUser()) {
- return R.string.category_personal;
+ return mDevicePolicyManager.getString(PERSONAL_CATEGORY_HEADER,
+ () -> mContext.getString(R.string.category_personal));
} else {
- return R.string.category_work;
+ return mDevicePolicyManager.getString(WORK_CATEGORY_HEADER,
+ () -> mContext.getString(R.string.category_work));
}
}
diff --git a/src/com/android/settings/deviceinfo/StorageWizardMoveProgress.java b/src/com/android/settings/deviceinfo/StorageWizardMoveProgress.java
index 8dc1e2f..454de9d 100644
--- a/src/com/android/settings/deviceinfo/StorageWizardMoveProgress.java
+++ b/src/com/android/settings/deviceinfo/StorageWizardMoveProgress.java
@@ -16,9 +16,11 @@
package com.android.settings.deviceinfo;
+import static android.app.admin.DevicePolicyResources.Strings.Settings.ERROR_MOVE_DEVICE_ADMIN;
import static android.content.Intent.EXTRA_TITLE;
import static android.content.pm.PackageManager.EXTRA_MOVE_ID;
+import android.app.admin.DevicePolicyManager;
import android.content.pm.PackageManager;
import android.content.pm.PackageManager.MoveCallback;
import android.os.Bundle;
@@ -87,7 +89,9 @@
case PackageManager.MOVE_FAILED_INSUFFICIENT_STORAGE:
return getString(R.string.insufficient_storage);
case PackageManager.MOVE_FAILED_DEVICE_ADMIN:
- return getString(R.string.move_error_device_admin);
+ return getSystemService(DevicePolicyManager.class)
+ .getString(ERROR_MOVE_DEVICE_ADMIN,
+ () -> getString(R.string.move_error_device_admin));
case PackageManager.MOVE_FAILED_DOESNT_EXIST:
return getString(R.string.does_not_exist);
case PackageManager.MOVE_FAILED_INVALID_LOCATION:
diff --git a/src/com/android/settings/display/ScreenTimeoutPreferenceController.java b/src/com/android/settings/display/ScreenTimeoutPreferenceController.java
index 2a3359a..65f0853 100644
--- a/src/com/android/settings/display/ScreenTimeoutPreferenceController.java
+++ b/src/com/android/settings/display/ScreenTimeoutPreferenceController.java
@@ -16,6 +16,7 @@
package com.android.settings.display;
+import static android.app.admin.DevicePolicyResources.Strings.Settings.DISABLED_BY_IT_ADMIN_TITLE;
import static android.provider.Settings.System.SCREEN_OFF_TIMEOUT;
import static com.android.settings.display.ScreenTimeoutSettings.FALLBACK_SCREEN_TIMEOUT_VALUE;
@@ -60,7 +61,9 @@
final RestrictedLockUtils.EnforcedAdmin admin = getPreferenceDisablingAdmin(maxTimeout);
if (admin != null) {
preference.setEnabled(false);
- preference.setSummary(mContext.getText(R.string.disabled_by_policy_title));
+ preference.setSummary(mContext.getSystemService(DevicePolicyManager.class)
+ .getString(DISABLED_BY_IT_ADMIN_TITLE,
+ () -> mContext.getString(R.string.disabled_by_policy_title)));
((RestrictedPreference) preference).setDisabledByAdmin(admin);
} else {
preference.setSummary(getTimeoutSummary(maxTimeout));
diff --git a/src/com/android/settings/display/ScreenTimeoutSettings.java b/src/com/android/settings/display/ScreenTimeoutSettings.java
index f8c03d5..43ec864 100644
--- a/src/com/android/settings/display/ScreenTimeoutSettings.java
+++ b/src/com/android/settings/display/ScreenTimeoutSettings.java
@@ -16,6 +16,7 @@
package com.android.settings.display;
+import static android.app.admin.DevicePolicyResources.Strings.Settings.OTHER_OPTIONS_DISABLED_BY_ADMIN;
import static android.hardware.SensorPrivacyManager.Sensors.CAMERA;
import static android.provider.Settings.System.SCREEN_OFF_TIMEOUT;
@@ -85,6 +86,8 @@
}
};
+ private DevicePolicyManager mDevicePolicyManager;
+
@VisibleForTesting
Context mContext;
@@ -116,6 +119,7 @@
public void onAttach(Context context) {
super.onAttach(context);
mContext = context;
+ mDevicePolicyManager = mContext.getSystemService(DevicePolicyManager.class);
mInitialEntries = getResources().getStringArray(R.array.screen_timeout_entries);
mInitialValues = getResources().getStringArray(R.array.screen_timeout_values);
mAdaptiveSleepController = new AdaptiveSleepPreferenceController(context);
@@ -219,8 +223,9 @@
@VisibleForTesting
void setupDisabledFooterPreference() {
- final String textDisabledByAdmin = getResources().getString(
- R.string.admin_disabled_other_options);
+ final String textDisabledByAdmin = mDevicePolicyManager.getString(
+ OTHER_OPTIONS_DISABLED_BY_ADMIN, () -> getResources().getString(
+ R.string.admin_disabled_other_options));
final String textMoreDetails = getResources().getString(R.string.admin_more_details);
final SpannableString spannableString = new SpannableString(
diff --git a/src/com/android/settings/enterprise/AdminActionPreferenceControllerBase.java b/src/com/android/settings/enterprise/AdminActionPreferenceControllerBase.java
index 1c7ff62..d5c10b4 100644
--- a/src/com/android/settings/enterprise/AdminActionPreferenceControllerBase.java
+++ b/src/com/android/settings/enterprise/AdminActionPreferenceControllerBase.java
@@ -14,6 +14,9 @@
package com.android.settings.enterprise;
+import static android.app.admin.DevicePolicyResources.Strings.Settings.ADMIN_ACTION_NONE;
+
+import android.app.admin.DevicePolicyManager;
import android.content.Context;
import android.text.format.DateUtils;
@@ -43,11 +46,17 @@
public void updateState(Preference preference) {
final Date timestamp = getAdminActionTimestamp();
preference.setSummary(timestamp == null ?
- mContext.getString(R.string.enterprise_privacy_none) :
+ getEnterprisePrivacyNone() :
DateUtils.formatDateTime(mContext, timestamp.getTime(),
DateUtils.FORMAT_SHOW_TIME | DateUtils.FORMAT_SHOW_DATE));
}
+ private String getEnterprisePrivacyNone() {
+ return mContext.getSystemService(DevicePolicyManager.class)
+ .getString(ADMIN_ACTION_NONE,
+ () -> mContext.getString(R.string.enterprise_privacy_none));
+ }
+
@Override
public boolean isAvailable() {
return true;
diff --git a/src/com/android/settings/enterprise/AlwaysOnVpnCurrentUserPreferenceController.java b/src/com/android/settings/enterprise/AlwaysOnVpnCurrentUserPreferenceController.java
index 696561b..e883ac3 100644
--- a/src/com/android/settings/enterprise/AlwaysOnVpnCurrentUserPreferenceController.java
+++ b/src/com/android/settings/enterprise/AlwaysOnVpnCurrentUserPreferenceController.java
@@ -13,6 +13,10 @@
*/
package com.android.settings.enterprise;
+import static android.app.admin.DevicePolicyResources.Strings.Settings.ALWAYS_ON_VPN_DEVICE;
+import static android.app.admin.DevicePolicyResources.Strings.Settings.ALWAYS_ON_VPN_PERSONAL_PROFILE;
+
+import android.app.admin.DevicePolicyManager;
import android.content.Context;
import androidx.preference.Preference;
@@ -27,18 +31,29 @@
private static final String KEY_ALWAYS_ON_VPN_PRIMARY_USER = "always_on_vpn_primary_user";
private final EnterprisePrivacyFeatureProvider mFeatureProvider;
+ private final DevicePolicyManager mDevicePolicyManager;
public AlwaysOnVpnCurrentUserPreferenceController(Context context) {
super(context);
mFeatureProvider = FeatureFactory.getFactory(context)
.getEnterprisePrivacyFeatureProvider(context);
+ mDevicePolicyManager = context.getSystemService(DevicePolicyManager.class);
}
@Override
public void updateState(Preference preference) {
- preference.setTitle(mFeatureProvider.isInCompMode()
- ? R.string.enterprise_privacy_always_on_vpn_personal
- : R.string.enterprise_privacy_always_on_vpn_device);
+ if (mFeatureProvider.isInCompMode()) {
+ preference.setTitle(
+ mDevicePolicyManager.getString(
+ ALWAYS_ON_VPN_PERSONAL_PROFILE,
+ () -> mContext.getString(
+ R.string.enterprise_privacy_always_on_vpn_personal)));
+ } else {
+ preference.setTitle(
+ mDevicePolicyManager.getString(ALWAYS_ON_VPN_DEVICE,
+ () -> mContext.getString(
+ R.string.enterprise_privacy_always_on_vpn_device)));
+ }
}
@Override
diff --git a/src/com/android/settings/enterprise/CaCertsCurrentUserPreferenceController.java b/src/com/android/settings/enterprise/CaCertsCurrentUserPreferenceController.java
index 45170b3..76aa6bc 100644
--- a/src/com/android/settings/enterprise/CaCertsCurrentUserPreferenceController.java
+++ b/src/com/android/settings/enterprise/CaCertsCurrentUserPreferenceController.java
@@ -14,6 +14,10 @@
package com.android.settings.enterprise;
+import static android.app.admin.DevicePolicyResources.Strings.Settings.CA_CERTS_DEVICE;
+import static android.app.admin.DevicePolicyResources.Strings.Settings.CA_CERTS_PERSONAL_PROFILE;
+
+import android.app.admin.DevicePolicyManager;
import android.content.Context;
import androidx.annotation.VisibleForTesting;
@@ -26,8 +30,11 @@
@VisibleForTesting
static final String CA_CERTS_CURRENT_USER = "ca_certs_current_user";
+ DevicePolicyManager mDevicePolicyManager;
+
public CaCertsCurrentUserPreferenceController(Context context) {
super(context);
+ mDevicePolicyManager = mContext.getSystemService(DevicePolicyManager.class);
}
@Override
@@ -38,9 +45,16 @@
@Override
public void updateState(Preference preference) {
super.updateState(preference);
- preference.setTitle(mFeatureProvider.isInCompMode()
- ? R.string.enterprise_privacy_ca_certs_personal
- : R.string.enterprise_privacy_ca_certs_device);
+
+ if (mFeatureProvider.isInCompMode()) {
+ preference.setTitle(mDevicePolicyManager.getString(
+ CA_CERTS_PERSONAL_PROFILE,
+ () -> mContext.getString(R.string.enterprise_privacy_ca_certs_personal)));
+ } else {
+ preference.setTitle(mDevicePolicyManager.getString(
+ CA_CERTS_DEVICE,
+ () -> mContext.getString(R.string.enterprise_privacy_ca_certs_device)));
+ }
}
@Override
diff --git a/src/com/android/settings/enterprise/DeviceAdminStringProviderImpl.java b/src/com/android/settings/enterprise/DeviceAdminStringProviderImpl.java
index 5d11d4a..696baca 100644
--- a/src/com/android/settings/enterprise/DeviceAdminStringProviderImpl.java
+++ b/src/com/android/settings/enterprise/DeviceAdminStringProviderImpl.java
@@ -16,8 +16,13 @@
package com.android.settings.enterprise;
+import static android.app.admin.DevicePolicyResources.Strings.Settings.CONTACT_YOUR_IT_ADMIN;
+import static android.app.admin.DevicePolicyResources.Strings.Settings.DISABLED_BY_IT_ADMIN_TITLE;
+import static android.app.admin.DevicePolicyResources.Strings.Settings.IT_ADMIN_POLICY_DISABLING_INFO_URL;
+
import static java.util.Objects.requireNonNull;
+import android.app.admin.DevicePolicyManager;
import android.content.Context;
import com.android.settings.R;
@@ -25,14 +30,17 @@
class DeviceAdminStringProviderImpl implements DeviceAdminStringProvider {
private final Context mContext;
+ private final DevicePolicyManager mDevicePolicyManager;
DeviceAdminStringProviderImpl(Context context) {
mContext = requireNonNull(context);
+ mDevicePolicyManager = mContext.getSystemService(DevicePolicyManager.class);
}
@Override
public String getDefaultDisabledByPolicyTitle() {
- return mContext.getString(R.string.disabled_by_policy_title);
+ return mDevicePolicyManager.getString(DISABLED_BY_IT_ADMIN_TITLE,
+ () -> mContext.getString(R.string.disabled_by_policy_title));
}
@Override
@@ -67,12 +75,14 @@
@Override
public String getDefaultDisabledByPolicyContent() {
- return mContext.getString(R.string.default_admin_support_msg);
+ return mDevicePolicyManager.getString(CONTACT_YOUR_IT_ADMIN,
+ () -> mContext.getString(R.string.default_admin_support_msg));
}
@Override
public String getLearnMoreHelpPageUrl() {
- return mContext.getString(R.string.help_url_action_disabled_by_it_admin);
+ return mDevicePolicyManager.getString(IT_ADMIN_POLICY_DISABLING_INFO_URL,
+ () -> mContext.getString(R.string.help_url_action_disabled_by_it_admin));
}
@Override
diff --git a/src/com/android/settings/enterprise/EnterprisePrivacyFeatureProviderImpl.java b/src/com/android/settings/enterprise/EnterprisePrivacyFeatureProviderImpl.java
index 35ce1f1..76b2e24 100644
--- a/src/com/android/settings/enterprise/EnterprisePrivacyFeatureProviderImpl.java
+++ b/src/com/android/settings/enterprise/EnterprisePrivacyFeatureProviderImpl.java
@@ -16,6 +16,9 @@
package com.android.settings.enterprise;
+import static android.app.admin.DevicePolicyResources.Strings.Settings.DEVICE_MANAGED_WITHOUT_NAME;
+import static android.app.admin.DevicePolicyResources.Strings.Settings.DEVICE_MANAGED_WITH_NAME;
+
import android.app.admin.DevicePolicyManager;
import android.content.ComponentName;
import android.content.Context;
@@ -95,10 +98,12 @@
final SpannableStringBuilder disclosure = new SpannableStringBuilder();
final CharSequence organizationName = mDpm.getDeviceOwnerOrganizationName();
if (organizationName != null) {
- disclosure.append(mResources.getString(R.string.do_disclosure_with_name,
- organizationName));
+ disclosure.append(mDpm.getString(DEVICE_MANAGED_WITH_NAME,
+ () -> mResources.getString(R.string.do_disclosure_with_name,
+ organizationName), organizationName));
} else {
- disclosure.append(mResources.getString(R.string.do_disclosure_generic));
+ disclosure.append(mDpm.getString(DEVICE_MANAGED_WITHOUT_NAME,
+ () -> mResources.getString(R.string.do_disclosure_generic)));
}
return disclosure;
}
diff --git a/src/com/android/settings/enterprise/EnterpriseSetDefaultAppsListPreferenceController.java b/src/com/android/settings/enterprise/EnterpriseSetDefaultAppsListPreferenceController.java
index c878058..34d098d 100644
--- a/src/com/android/settings/enterprise/EnterpriseSetDefaultAppsListPreferenceController.java
+++ b/src/com/android/settings/enterprise/EnterpriseSetDefaultAppsListPreferenceController.java
@@ -16,6 +16,10 @@
package com.android.settings.enterprise;
+import static android.app.admin.DevicePolicyResources.Strings.Settings.PERSONAL_CATEGORY_HEADER;
+import static android.app.admin.DevicePolicyResources.Strings.Settings.WORK_CATEGORY_HEADER;
+
+import android.app.admin.DevicePolicyManager;
import android.content.Context;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageManager;
@@ -123,14 +127,20 @@
if (!mEnterprisePrivacyFeatureProvider.isInCompMode() && mUsers.size() == 1) {
createPreferences(prefContext, screen, mApps.get(0));
} else {
+ DevicePolicyManager devicePolicyManager =
+ mContext.getSystemService(DevicePolicyManager.class);
for (int i = 0; i < mUsers.size(); i++) {
final UserInfo userInfo = mUsers.get(i);
final PreferenceCategory category = new PreferenceCategory(prefContext);
screen.addPreference(category);
if (userInfo.isManagedProfile()) {
- category.setTitle(R.string.category_work);
+ category.setTitle(devicePolicyManager.getString(
+ WORK_CATEGORY_HEADER,
+ () -> mContext.getString(R.string.category_work)));
} else {
- category.setTitle(R.string.category_personal);
+ category.setTitle(devicePolicyManager.getString(
+ PERSONAL_CATEGORY_HEADER,
+ () -> mContext.getString(R.string.category_personal)));
}
category.setOrder(i);
createPreferences(prefContext, category, mApps.get(i));
diff --git a/src/com/android/settings/enterprise/ImePreferenceController.java b/src/com/android/settings/enterprise/ImePreferenceController.java
index 51a24a2..25dcdaf 100644
--- a/src/com/android/settings/enterprise/ImePreferenceController.java
+++ b/src/com/android/settings/enterprise/ImePreferenceController.java
@@ -14,6 +14,9 @@
package com.android.settings.enterprise;
+import static android.app.admin.DevicePolicyResources.Strings.Settings.ADMIN_ACTION_SET_INPUT_METHOD_NAME;
+
+import android.app.admin.DevicePolicyManager;
import android.content.Context;
import androidx.preference.Preference;
@@ -37,9 +40,13 @@
@Override
public void updateState(Preference preference) {
- preference.setSummary(mContext.getResources().getString(
- R.string.enterprise_privacy_input_method_name,
- mFeatureProvider.getImeLabelIfOwnerSet()));
+ preference.setSummary(
+ mContext.getSystemService(DevicePolicyManager.class)
+ .getString(ADMIN_ACTION_SET_INPUT_METHOD_NAME, () ->
+ mContext.getResources().getString(
+ R.string.enterprise_privacy_input_method_name,
+ mFeatureProvider.getImeLabelIfOwnerSet()),
+ mFeatureProvider.getImeLabelIfOwnerSet()));
}
@Override
diff --git a/src/com/android/settings/enterprise/ManageDeviceAdminPreferenceController.java b/src/com/android/settings/enterprise/ManageDeviceAdminPreferenceController.java
index 00d17f1..934659d 100644
--- a/src/com/android/settings/enterprise/ManageDeviceAdminPreferenceController.java
+++ b/src/com/android/settings/enterprise/ManageDeviceAdminPreferenceController.java
@@ -13,6 +13,9 @@
*/
package com.android.settings.enterprise;
+import static android.app.admin.DevicePolicyResources.Strings.Settings.NUMBER_OF_DEVICE_ADMINS_NONE;
+
+import android.app.admin.DevicePolicyManager;
import android.content.Context;
import com.android.settings.R;
@@ -23,20 +26,28 @@
public class ManageDeviceAdminPreferenceController extends BasePreferenceController {
private final EnterprisePrivacyFeatureProvider mFeatureProvider;
+ private final DevicePolicyManager mDevicePolicyManager;
public ManageDeviceAdminPreferenceController(Context context, String key) {
super(context, key);
mFeatureProvider = FeatureFactory.getFactory(context)
.getEnterprisePrivacyFeatureProvider(context);
+ mDevicePolicyManager =
+ mContext.getSystemService(DevicePolicyManager.class);
}
@Override
public CharSequence getSummary() {
final int activeAdmins
= mFeatureProvider.getNumberOfActiveDeviceAdminsForCurrentUserAndManagedProfile();
- return activeAdmins == 0
- ? mContext.getResources().getString(R.string.number_of_device_admins_none)
- : mContext.getResources().getQuantityString(R.plurals.number_of_device_admins,
+
+ if (activeAdmins == 0) {
+ return mDevicePolicyManager.getString(NUMBER_OF_DEVICE_ADMINS_NONE,
+ () -> mContext.getResources().getString(R.string.number_of_device_admins_none));
+ }
+
+ // TODO: override
+ return mContext.getResources().getQuantityString(R.plurals.number_of_device_admins,
activeAdmins, activeAdmins);
}
diff --git a/src/com/android/settings/enterprise/PrivacyPreferenceControllerHelper.java b/src/com/android/settings/enterprise/PrivacyPreferenceControllerHelper.java
index fa1874a..f6070bd 100644
--- a/src/com/android/settings/enterprise/PrivacyPreferenceControllerHelper.java
+++ b/src/com/android/settings/enterprise/PrivacyPreferenceControllerHelper.java
@@ -17,6 +17,8 @@
package com.android.settings.enterprise;
import static android.app.admin.DevicePolicyManager.DEVICE_OWNER_TYPE_FINANCED;
+import static android.app.admin.DevicePolicyResources.Strings.Settings.MANAGED_DEVICE_INFO_SUMMARY;
+import static android.app.admin.DevicePolicyResources.Strings.Settings.MANAGED_DEVICE_INFO_SUMMARY_WITH_NAME;
import android.app.admin.DevicePolicyManager;
import android.content.Context;
@@ -50,10 +52,16 @@
final String organizationName = mFeatureProvider.getDeviceOwnerOrganizationName();
if (organizationName == null) {
- preference.setSummary(R.string.enterprise_privacy_settings_summary_generic);
+ preference.setSummary(mDevicePolicyManager.getString(
+ MANAGED_DEVICE_INFO_SUMMARY,
+ () -> mContext.getString(
+ R.string.enterprise_privacy_settings_summary_generic)));
} else {
- preference.setSummary(mContext.getResources().getString(
- R.string.enterprise_privacy_settings_summary_with_name, organizationName));
+ preference.setSummary(mDevicePolicyManager
+ .getString(MANAGED_DEVICE_INFO_SUMMARY_WITH_NAME,
+ () -> mContext.getResources().getString(
+ R.string.enterprise_privacy_settings_summary_with_name,
+ organizationName), organizationName));
}
}
diff --git a/src/com/android/settings/homepage/contextualcards/conditional/WorkModeConditionController.java b/src/com/android/settings/homepage/contextualcards/conditional/WorkModeConditionController.java
index 4e901fd..1927421 100644
--- a/src/com/android/settings/homepage/contextualcards/conditional/WorkModeConditionController.java
+++ b/src/com/android/settings/homepage/contextualcards/conditional/WorkModeConditionController.java
@@ -16,6 +16,9 @@
package com.android.settings.homepage.contextualcards.conditional;
+import static android.app.admin.DevicePolicyResources.Strings.Settings.WORK_PROFILE_OFF_CONDITION_TITLE;
+
+import android.app.admin.DevicePolicyManager;
import android.app.settings.SettingsEnums;
import android.content.BroadcastReceiver;
import android.content.Context;
@@ -46,6 +49,7 @@
private final Context mAppContext;
private final UserManager mUm;
+ private final DevicePolicyManager mDpm;
private final ConditionManager mConditionManager;
private final Receiver mReceiver;
@@ -54,6 +58,7 @@
public WorkModeConditionController(Context appContext, ConditionManager manager) {
mAppContext = appContext;
mUm = mAppContext.getSystemService(UserManager.class);
+ mDpm = mAppContext.getSystemService(DevicePolicyManager.class);
mConditionManager = manager;
mReceiver = new Receiver();
}
@@ -84,13 +89,15 @@
@Override
public ContextualCard buildContextualCard() {
+ String conditionWorkTitle = mDpm.getString(WORK_PROFILE_OFF_CONDITION_TITLE,
+ () -> mAppContext.getString(R.string.condition_work_title));
return new ConditionalContextualCard.Builder()
.setConditionId(ID)
.setMetricsConstant(SettingsEnums.SETTINGS_CONDITION_WORK_MODE)
.setActionText(mAppContext.getText(R.string.condition_turn_on))
.setName(mAppContext.getPackageName() + "/"
- + mAppContext.getText(R.string.condition_work_title))
- .setTitleText(mAppContext.getText(R.string.condition_work_title).toString())
+ + conditionWorkTitle)
+ .setTitleText(conditionWorkTitle)
.setSummaryText(mAppContext.getText(R.string.condition_work_summary).toString())
.setIconDrawable(mAppContext.getDrawable(R.drawable.ic_signal_workmode_enable))
.setViewType(ConditionContextualCardRenderer.VIEW_TYPE_HALF_WIDTH)
diff --git a/src/com/android/settings/notification/NotificationAccessSettings.java b/src/com/android/settings/notification/NotificationAccessSettings.java
index 10954a1..0daa818 100644
--- a/src/com/android/settings/notification/NotificationAccessSettings.java
+++ b/src/com/android/settings/notification/NotificationAccessSettings.java
@@ -16,6 +16,9 @@
package com.android.settings.notification;
+import static android.app.admin.DevicePolicyResources.Strings.Settings.WORK_APPS_CANNOT_ACCESS_NOTIFICATION_SETTINGS;
+import static android.app.admin.DevicePolicyResources.Strings.Settings.WORK_PROFILE_NOTIFICATION_LISTENER_BLOCKED;
+
import android.annotation.Nullable;
import android.app.NotificationManager;
import android.app.admin.DevicePolicyManager;
@@ -103,7 +106,9 @@
if (UserManager.get(mContext).isManagedProfile()) {
// Apps in the work profile do not support notification listeners.
- Toast.makeText(mContext, R.string.notification_settings_work_profile,
+ Toast.makeText(mContext,
+ mDpm.getString(WORK_APPS_CANNOT_ACCESS_NOTIFICATION_SETTINGS,
+ () -> mContext.getString(R.string.notification_settings_work_profile)),
Toast.LENGTH_SHORT).show();
finish();
}
@@ -163,7 +168,9 @@
if (managedProfileId != UserHandle.USER_NULL
&& !mDpm.isNotificationListenerServicePermitted(
service.packageName, managedProfileId)) {
- pref.setSummary(R.string.work_profile_notification_access_blocked_summary);
+ pref.setSummary(mDpm.getString(WORK_PROFILE_NOTIFICATION_LISTENER_BLOCKED,
+ () -> getString(
+ R.string.work_profile_notification_access_blocked_summary)));
}
pref.setOnPreferenceClickListener(preference -> {
final Bundle args = new Bundle();
diff --git a/src/com/android/settings/notification/SoundWorkSettingsController.java b/src/com/android/settings/notification/SoundWorkSettingsController.java
index de374e9..bcaf4af 100644
--- a/src/com/android/settings/notification/SoundWorkSettingsController.java
+++ b/src/com/android/settings/notification/SoundWorkSettingsController.java
@@ -16,8 +16,13 @@
package com.android.settings.notification;
+import static android.app.admin.DevicePolicyResources.Strings.Settings.ENABLE_WORK_PROFILE_SYNC_WITH_PERSONAL_SOUNDS_DIALOG_MESSAGE;
+import static android.app.admin.DevicePolicyResources.Strings.Settings.ENABLE_WORK_PROFILE_SYNC_WITH_PERSONAL_SOUNDS_DIALOG_TITLE;
+import static android.app.admin.DevicePolicyResources.Strings.Settings.WORK_PROFILE_SYNC_WITH_PERSONAL_SOUNDS_ACTIVE_SUMMARY;
+
import android.annotation.UserIdInt;
import android.app.Dialog;
+import android.app.admin.DevicePolicyManager;
import android.app.settings.SettingsEnums;
import android.content.BroadcastReceiver;
import android.content.Context;
@@ -252,11 +257,16 @@
private void enableWorkSyncSettings() {
mWorkUsePersonalSounds.setChecked(true);
+ String summary = mContext.getSystemService(DevicePolicyManager.class).getString(
+ WORK_PROFILE_SYNC_WITH_PERSONAL_SOUNDS_ACTIVE_SUMMARY,
+ () -> mContext.getString(R.string.work_sound_same_as_personal)
+ );
+
if (mWorkPhoneRingtonePreference != null) {
- mWorkPhoneRingtonePreference.setSummary(R.string.work_sound_same_as_personal);
+ mWorkPhoneRingtonePreference.setSummary(summary);
}
- mWorkNotificationRingtonePreference.setSummary(R.string.work_sound_same_as_personal);
- mWorkAlarmRingtonePreference.setSummary(R.string.work_sound_same_as_personal);
+ mWorkNotificationRingtonePreference.setSummary(summary);
+ mWorkAlarmRingtonePreference.setSummary(summary);
}
private void disableWorkSync() {
@@ -339,9 +349,18 @@
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
+
+ Context context = getActivity().getApplicationContext();
+ DevicePolicyManager devicePolicyManager =
+ context.getSystemService(DevicePolicyManager.class);
+
return new AlertDialog.Builder(getActivity())
- .setTitle(R.string.work_sync_dialog_title)
- .setMessage(R.string.work_sync_dialog_message)
+ .setTitle(devicePolicyManager.getString(
+ ENABLE_WORK_PROFILE_SYNC_WITH_PERSONAL_SOUNDS_DIALOG_TITLE,
+ () -> context.getString(R.string.work_sync_dialog_title)))
+ .setMessage(devicePolicyManager.getString(
+ ENABLE_WORK_PROFILE_SYNC_WITH_PERSONAL_SOUNDS_DIALOG_MESSAGE,
+ () -> context.getString(R.string.work_sync_dialog_message)))
.setPositiveButton(R.string.work_sync_dialog_yes,
SoundWorkSettingsController.UnifyWorkDialogFragment.this)
.setNegativeButton(android.R.string.no, /* listener= */ null)
diff --git a/src/com/android/settings/notification/zen/ZenAccessSettings.java b/src/com/android/settings/notification/zen/ZenAccessSettings.java
index 1a9fb16..aac6954 100644
--- a/src/com/android/settings/notification/zen/ZenAccessSettings.java
+++ b/src/com/android/settings/notification/zen/ZenAccessSettings.java
@@ -17,7 +17,6 @@
package com.android.settings.notification.zen;
import android.annotation.Nullable;
-import android.app.ActivityManager;
import android.app.NotificationManager;
import android.app.settings.SettingsEnums;
import android.content.Context;
@@ -28,8 +27,8 @@
import android.os.UserHandle;
import android.os.UserManager;
import android.util.ArraySet;
-import android.view.View;
import android.util.Log;
+import android.view.View;
import androidx.preference.PreferenceScreen;
@@ -138,7 +137,7 @@
pref.setOnPreferenceClickListener(preference -> {
AppInfoBase.startAppInfoFragment(
ZenAccessDetails.class /* fragment */,
- R.string.manage_zen_access_title /* titleRes */,
+ getString(R.string.manage_zen_access_title) /* titleRes */,
pkg,
app.uid,
this /* source */,
diff --git a/src/com/android/settings/password/ChooseLockGeneric.java b/src/com/android/settings/password/ChooseLockGeneric.java
index 2d6f6b0..f31abb9 100644
--- a/src/com/android/settings/password/ChooseLockGeneric.java
+++ b/src/com/android/settings/password/ChooseLockGeneric.java
@@ -22,6 +22,8 @@
import static android.app.admin.DevicePolicyManager.PASSWORD_COMPLEXITY_LOW;
import static android.app.admin.DevicePolicyManager.PASSWORD_COMPLEXITY_MEDIUM;
import static android.app.admin.DevicePolicyManager.PASSWORD_COMPLEXITY_NONE;
+import static android.app.admin.DevicePolicyResources.Strings.Settings.WORK_PROFILE_IT_ADMIN_CANT_RESET_SCREEN_LOCK;
+import static android.app.admin.DevicePolicyResources.Strings.Settings.WORK_PROFILE_SCREEN_LOCK_SETUP_MESSAGE;
import static com.android.settings.password.ChooseLockPassword.ChooseLockPasswordFragment.RESULT_FINISHED;
import static com.android.settings.password.ChooseLockSettingsHelper.EXTRA_KEY_CALLER_APP_NAME;
@@ -29,7 +31,6 @@
import static com.android.settings.password.ChooseLockSettingsHelper.EXTRA_KEY_IS_CALLING_APP_ADMIN;
import static com.android.settings.password.ChooseLockSettingsHelper.EXTRA_KEY_REQUESTED_MIN_COMPLEXITY;
-import android.accessibilityservice.AccessibilityServiceInfo;
import android.app.Activity;
import android.app.Dialog;
import android.app.admin.DevicePolicyManager;
@@ -394,13 +395,16 @@
}
} else {
if (mIsManagedProfile) {
- textView.setText(R.string.lock_settings_picker_profile_message);
+ textView.setText(mDpm.getString(WORK_PROFILE_SCREEN_LOCK_SETUP_MESSAGE,
+ () -> getString(R.string.lock_settings_picker_profile_message)));
} else {
int profileUserId = Utils.getManagedProfileId(mUserManager, mUserId);
if (mController.isScreenLockRestrictedByAdmin()
&& profileUserId != UserHandle.USER_NULL) {
- final StringBuilder description = new StringBuilder(getText(
- R.string.lock_settings_picker_admin_restricted_personal_message));
+ final StringBuilder description = new StringBuilder(
+ mDpm.getString(WORK_PROFILE_IT_ADMIN_CANT_RESET_SCREEN_LOCK, () ->
+ getString(
+ R.string.lock_settings_picker_admin_restricted_personal_message)));
final LinkifyUtils.OnClickListener clickListener = () -> {
final Bundle extras = new Bundle();
extras.putInt(Intent.EXTRA_USER_ID, profileUserId);
diff --git a/src/com/android/settings/password/ChooseLockPassword.java b/src/com/android/settings/password/ChooseLockPassword.java
index a2f9922..50a0bae 100644
--- a/src/com/android/settings/password/ChooseLockPassword.java
+++ b/src/com/android/settings/password/ChooseLockPassword.java
@@ -18,6 +18,13 @@
import static android.app.admin.DevicePolicyManager.PASSWORD_COMPLEXITY_NONE;
import static android.app.admin.DevicePolicyManager.PASSWORD_QUALITY_NUMERIC;
+import static android.app.admin.DevicePolicyResources.Strings.UNDEFINED;
+import static android.app.admin.DevicePolicyResources.Strings.Settings.PASSWORD_RECENTLY_USED;
+import static android.app.admin.DevicePolicyResources.Strings.Settings.PIN_RECENTLY_USED;
+import static android.app.admin.DevicePolicyResources.Strings.Settings.REENTER_WORK_PROFILE_PASSWORD_HEADER;
+import static android.app.admin.DevicePolicyResources.Strings.Settings.REENTER_WORK_PROFILE_PIN_HEADER;
+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 com.android.internal.widget.LockPatternUtils.CREDENTIAL_TYPE_NONE;
import static com.android.internal.widget.PasswordValidationError.CONTAINS_INVALID_CHARACTERS;
@@ -259,11 +266,13 @@
Introduction(
R.string.lockpassword_choose_your_password_header, // password
+ SET_WORK_PROFILE_PASSWORD_HEADER,
R.string.lockpassword_choose_your_profile_password_header,
R.string.lockpassword_choose_your_password_header_for_fingerprint,
R.string.lockpassword_choose_your_password_header_for_face,
R.string.lockpassword_choose_your_password_header_for_biometrics,
R.string.lockpassword_choose_your_pin_header, // pin
+ SET_WORK_PROFILE_PIN_HEADER,
R.string.lockpassword_choose_your_profile_pin_header,
R.string.lockpassword_choose_your_pin_header_for_fingerprint,
R.string.lockpassword_choose_your_pin_header_for_face,
@@ -274,11 +283,13 @@
NeedToConfirm(
R.string.lockpassword_confirm_your_password_header,
+ REENTER_WORK_PROFILE_PASSWORD_HEADER,
R.string.lockpassword_reenter_your_profile_password_header,
R.string.lockpassword_confirm_your_password_header,
R.string.lockpassword_confirm_your_password_header,
R.string.lockpassword_confirm_your_password_header,
R.string.lockpassword_confirm_your_pin_header,
+ REENTER_WORK_PROFILE_PIN_HEADER,
R.string.lockpassword_reenter_your_profile_pin_header,
R.string.lockpassword_confirm_your_pin_header,
R.string.lockpassword_confirm_your_pin_header,
@@ -289,11 +300,13 @@
ConfirmWrong(
R.string.lockpassword_confirm_passwords_dont_match,
+ UNDEFINED,
R.string.lockpassword_confirm_passwords_dont_match,
R.string.lockpassword_confirm_passwords_dont_match,
R.string.lockpassword_confirm_passwords_dont_match,
R.string.lockpassword_confirm_passwords_dont_match,
R.string.lockpassword_confirm_pins_dont_match,
+ UNDEFINED,
R.string.lockpassword_confirm_pins_dont_match,
R.string.lockpassword_confirm_pins_dont_match,
R.string.lockpassword_confirm_pins_dont_match,
@@ -303,11 +316,13 @@
R.string.lockpassword_confirm_label);
Stage(int hintInAlpha,
+ String hintOverrideInAlphaForProfile,
int hintInAlphaForProfile,
int hintInAlphaForFingerprint,
int hintInAlphaForFace,
int hintInAlphaForBiometrics,
int hintInNumeric,
+ String hintOverrideInNumericForProfile,
int hintInNumericForProfile,
int hintInNumericForFingerprint,
int hintInNumericForFace,
@@ -317,12 +332,14 @@
int nextButtonText) {
this.alphaHint = hintInAlpha;
+ this.alphaHintOverrideForProfile = hintOverrideInAlphaForProfile;
this.alphaHintForProfile = hintInAlphaForProfile;
this.alphaHintForFingerprint = hintInAlphaForFingerprint;
this.alphaHintForFace = hintInAlphaForFace;
this.alphaHintForBiometrics = hintInAlphaForBiometrics;
this.numericHint = hintInNumeric;
+ this.numericHintOverrideForProfile = hintOverrideInNumericForProfile;
this.numericHintForProfile = hintInNumericForProfile;
this.numericHintForFingerprint = hintInNumericForFingerprint;
this.numericHintForFace = hintInNumericForFace;
@@ -341,6 +358,7 @@
// Password header
public final int alphaHint;
+ public final String alphaHintOverrideForProfile;
public final int alphaHintForProfile;
public final int alphaHintForFingerprint;
public final int alphaHintForFace;
@@ -348,6 +366,7 @@
// PIN header
public final int numericHint;
+ public final String numericHintOverrideForProfile;
public final int numericHintForProfile;
public final int numericHintForFingerprint;
public final int numericHintForFace;
@@ -361,26 +380,34 @@
public final int buttonText;
- public @StringRes int getHint(boolean isAlpha, int type, boolean isProfile) {
+ public String getHint(Context context, boolean isAlpha, int type, boolean isProfile) {
if (isAlpha) {
if (type == TYPE_FINGERPRINT) {
- return alphaHintForFingerprint;
+ return context.getString(alphaHintForFingerprint);
} else if (type == TYPE_FACE) {
- return alphaHintForFace;
+ return context.getString(alphaHintForFace);
} else if (type == TYPE_BIOMETRIC) {
- return alphaHintForBiometrics;
+ return context.getString(alphaHintForBiometrics);
+ } else if (isProfile) {
+ return context.getSystemService(DevicePolicyManager.class)
+ .getString(alphaHintOverrideForProfile,
+ () -> context.getString(alphaHintForProfile));
} else {
- return isProfile ? alphaHintForProfile : alphaHint;
+ return context.getString(alphaHint);
}
} else {
if (type == TYPE_FINGERPRINT) {
- return numericHintForFingerprint;
+ return context.getString(numericHintForFingerprint);
} else if (type == TYPE_FACE) {
- return numericHintForFace;
+ return context.getString(numericHintForFace);
} else if (type == TYPE_BIOMETRIC) {
- return numericHintForBiometrics;
+ return context.getString(numericHintForBiometrics);
+ } else if (isProfile) {
+ return context.getSystemService(DevicePolicyManager.class)
+ .getString(numericHintOverrideForProfile,
+ () -> context.getString(numericHintForProfile));
} else {
- return isProfile ? numericHintForProfile : numericHint;
+ return context.getString(numericHint);
}
}
}
@@ -556,8 +583,8 @@
if (activity instanceof SettingsActivity) {
final SettingsActivity sa = (SettingsActivity) activity;
- int title = Stage.Introduction.getHint(mIsAlphaMode, getStageType(),
- mIsManagedProfile);
+ String title = Stage.Introduction.getHint(
+ getContext(), mIsAlphaMode, getStageType(), mIsManagedProfile);
sa.setTitle(title);
mLayout.setHeaderText(title);
}
@@ -818,9 +845,17 @@
messages.add(getString(R.string.lockpassword_pin_no_sequential_digits));
break;
case RECENTLY_USED:
- messages.add(getString(mIsAlphaMode
- ? R.string.lockpassword_password_recently_used
- : R.string.lockpassword_pin_recently_used));
+ DevicePolicyManager devicePolicyManager =
+ getContext().getSystemService(DevicePolicyManager.class);
+ if (mIsAlphaMode) {
+ messages.add(devicePolicyManager.getString(
+ PASSWORD_RECENTLY_USED,
+ () -> getString(R.string.lockpassword_password_recently_used)));
+ } else {
+ messages.add(devicePolicyManager.getString(
+ PIN_RECENTLY_USED,
+ () -> getString(R.string.lockpassword_pin_recently_used)));
+ }
break;
default:
Log.wtf(TAG, "unknown error validating password: " + error);
@@ -851,8 +886,8 @@
} else {
// Hide password requirement view when we are just asking user to confirm the pw.
mPasswordRestrictionView.setVisibility(View.GONE);
- setHeaderText(getString(mUiStage.getHint(mIsAlphaMode, getStageType(),
- mIsManagedProfile)));
+ setHeaderText(mUiStage.getHint(getContext(), mIsAlphaMode, getStageType(),
+ mIsManagedProfile));
setNextEnabled(canInput && length >= LockPatternUtils.MIN_LOCK_PASSWORD_SIZE);
mSkipOrClearButton.setVisibility(toVisibility(canInput && length > 0));
}
diff --git a/src/com/android/settings/password/ChooseLockPattern.java b/src/com/android/settings/password/ChooseLockPattern.java
index 60b8c6c..64fe9ef 100644
--- a/src/com/android/settings/password/ChooseLockPattern.java
+++ b/src/com/android/settings/password/ChooseLockPattern.java
@@ -16,6 +16,7 @@
package com.android.settings.password;
+import static android.app.admin.DevicePolicyResources.Strings.Settings.SET_WORK_PROFILE_PATTERN_HEADER;
import static android.view.View.ACCESSIBILITY_LIVE_REGION_POLITE;
import static com.android.settings.password.ChooseLockSettingsHelper.EXTRA_KEY_UNIFICATION_PROFILE_CREDENTIAL;
@@ -23,6 +24,7 @@
import android.annotation.SuppressLint;
import android.app.Activity;
+import android.app.admin.DevicePolicyManager;
import android.app.settings.SettingsEnums;
import android.content.Context;
import android.content.Intent;
@@ -474,15 +476,18 @@
}
private void updateActivityTitle() {
- final int msg;
+ final String msg;
if (mForFingerprint) {
- msg = R.string.lockpassword_choose_your_pattern_header_for_fingerprint;
+ msg = getString(R.string.lockpassword_choose_your_pattern_header_for_fingerprint);
} else if (mForFace) {
- msg = R.string.lockpassword_choose_your_pattern_header_for_face;
+ msg = getString(R.string.lockpassword_choose_your_pattern_header_for_face);
+ } else if (mIsManagedProfile) {
+ msg = getContext().getSystemService(DevicePolicyManager.class)
+ .getString(SET_WORK_PROFILE_PATTERN_HEADER,
+ () -> getString(
+ R.string.lockpassword_choose_your_profile_pattern_header));
} else {
- msg = mIsManagedProfile
- ? R.string.lockpassword_choose_your_profile_pattern_header
- : R.string.lockpassword_choose_your_pattern_header;
+ msg = getString(R.string.lockpassword_choose_your_pattern_header);
}
getActivity().setTitle(msg);
}
diff --git a/src/com/android/settings/password/ConfirmDeviceCredentialActivity.java b/src/com/android/settings/password/ConfirmDeviceCredentialActivity.java
index 22d87a5..4b06fe0 100644
--- a/src/com/android/settings/password/ConfirmDeviceCredentialActivity.java
+++ b/src/com/android/settings/password/ConfirmDeviceCredentialActivity.java
@@ -17,6 +17,13 @@
package com.android.settings.password;
+import static android.app.admin.DevicePolicyResources.Strings.Settings.CONFIRM_WORK_PROFILE_PASSWORD_HEADER;
+import static android.app.admin.DevicePolicyResources.Strings.Settings.CONFIRM_WORK_PROFILE_PATTERN_HEADER;
+import static android.app.admin.DevicePolicyResources.Strings.Settings.CONFIRM_WORK_PROFILE_PIN_HEADER;
+import static android.app.admin.DevicePolicyResources.Strings.Settings.WORK_PROFILE_CONFIRM_PASSWORD;
+import static android.app.admin.DevicePolicyResources.Strings.Settings.WORK_PROFILE_CONFIRM_PATTERN;
+import static android.app.admin.DevicePolicyResources.Strings.Settings.WORK_PROFILE_CONFIRM_PIN;
+
import static com.android.settings.Utils.SETTINGS_PACKAGE_NAME;
import android.app.Activity;
@@ -259,19 +266,36 @@
private String getTitleFromCredentialType(@LockPatternUtils.CredentialType int credentialType,
boolean isEffectiveUserManagedProfile) {
+ int overrideStringId;
+ int defaultStringId;
switch (credentialType) {
case LockPatternUtils.CREDENTIAL_TYPE_PIN:
- return isEffectiveUserManagedProfile
- ? getString(R.string.lockpassword_confirm_your_work_pin_header)
- : getString(R.string.lockpassword_confirm_your_pin_header);
+
+ if (isEffectiveUserManagedProfile) {
+ return mDevicePolicyManager.getString(
+ CONFIRM_WORK_PROFILE_PIN_HEADER,
+ () -> getString(R.string.lockpassword_confirm_your_work_pin_header));
+ }
+
+ return getString(R.string.lockpassword_confirm_your_pin_header);
case LockPatternUtils.CREDENTIAL_TYPE_PATTERN:
- return isEffectiveUserManagedProfile
- ? getString(R.string.lockpassword_confirm_your_work_pattern_header)
- : getString(R.string.lockpassword_confirm_your_pattern_header);
+ if (isEffectiveUserManagedProfile) {
+ return mDevicePolicyManager.getString(
+ CONFIRM_WORK_PROFILE_PATTERN_HEADER,
+ () -> getString(
+ R.string.lockpassword_confirm_your_work_pattern_header));
+ }
+
+ return getString(R.string.lockpassword_confirm_your_pattern_header);
case LockPatternUtils.CREDENTIAL_TYPE_PASSWORD:
- return isEffectiveUserManagedProfile
- ? getString(R.string.lockpassword_confirm_your_work_password_header)
- : getString(R.string.lockpassword_confirm_your_password_header);
+ if (isEffectiveUserManagedProfile) {
+ return mDevicePolicyManager.getString(
+ CONFIRM_WORK_PROFILE_PASSWORD_HEADER,
+ () -> getString(
+ R.string.lockpassword_confirm_your_work_password_header));
+ }
+
+ return getString(R.string.lockpassword_confirm_your_password_header);
}
return null;
}
@@ -280,17 +304,29 @@
boolean isEffectiveUserManagedProfile) {
switch (credentialType) {
case LockPatternUtils.CREDENTIAL_TYPE_PIN:
- return isEffectiveUserManagedProfile
- ? getString(R.string.lockpassword_confirm_your_pin_generic_profile)
- : getString(R.string.lockpassword_confirm_your_pin_generic);
+ if (isEffectiveUserManagedProfile) {
+ return mDevicePolicyManager.getString(WORK_PROFILE_CONFIRM_PIN,
+ () -> getString(
+ R.string.lockpassword_confirm_your_pin_generic_profile));
+ }
+
+ return getString(R.string.lockpassword_confirm_your_pin_generic);
case LockPatternUtils.CREDENTIAL_TYPE_PATTERN:
- return isEffectiveUserManagedProfile
- ? getString(R.string.lockpassword_confirm_your_pattern_generic_profile)
- : getString(R.string.lockpassword_confirm_your_pattern_generic);
+ if (isEffectiveUserManagedProfile) {
+ return mDevicePolicyManager.getString(WORK_PROFILE_CONFIRM_PATTERN,
+ () -> getString(
+ R.string.lockpassword_confirm_your_pattern_generic_profile));
+ }
+
+ return getString(R.string.lockpassword_confirm_your_pattern_generic);
case LockPatternUtils.CREDENTIAL_TYPE_PASSWORD:
- return isEffectiveUserManagedProfile
- ? getString(R.string.lockpassword_confirm_your_password_generic_profile)
- : getString(R.string.lockpassword_confirm_your_password_generic);
+ if (isEffectiveUserManagedProfile) {
+ return mDevicePolicyManager.getString(WORK_PROFILE_CONFIRM_PASSWORD,
+ () -> getString(
+ R.string.lockpassword_confirm_your_password_generic_profile));
+ }
+
+ return getString(R.string.lockpassword_confirm_your_password_generic);
}
return null;
}
diff --git a/src/com/android/settings/password/ConfirmDeviceCredentialBaseFragment.java b/src/com/android/settings/password/ConfirmDeviceCredentialBaseFragment.java
index 3440071..9650a4d 100644
--- a/src/com/android/settings/password/ConfirmDeviceCredentialBaseFragment.java
+++ b/src/com/android/settings/password/ConfirmDeviceCredentialBaseFragment.java
@@ -17,6 +17,8 @@
// TODO (b/35202196): move this class out of the root of the package.
package com.android.settings.password;
+import static android.app.admin.DevicePolicyResources.Strings.Settings.WORK_PROFILE_LOCK_ATTEMPTS_FAILED;
+
import static com.android.settings.Utils.SETTINGS_PACKAGE_NAME;
import android.annotation.Nullable;
@@ -243,13 +245,16 @@
// Last try
final String title = getActivity().getString(
R.string.lock_last_attempt_before_wipe_warning_title);
- final int messageId = getLastTryErrorMessage(userType);
- LastTryDialog.show(fragmentManager, title, messageId,
+ final String overrideMessageId = getLastTryOverrideErrorMessageId(userType);
+ final int defaultMessageId = getLastTryDefaultErrorMessage(userType);
+ final String message = mDevicePolicyManager.getString(
+ overrideMessageId, () -> getString(defaultMessageId));
+ LastTryDialog.show(fragmentManager, title, message,
android.R.string.ok, false /* dismiss */);
} else {
// Device, profile, or secondary user is wiped
- final int messageId = getWipeMessage(userType);
- LastTryDialog.show(fragmentManager, null /* title */, messageId,
+ final String message = getWipeMessage(userType);
+ LastTryDialog.show(fragmentManager, null /* title */, message,
R.string.lock_failed_attempts_now_wiping_dialog_dismiss, true /* dismiss */);
}
}
@@ -266,16 +271,18 @@
}
}
- protected abstract int getLastTryErrorMessage(int userType);
+ protected abstract String getLastTryOverrideErrorMessageId(int userType);
+ protected abstract int getLastTryDefaultErrorMessage(int userType);
- private int getWipeMessage(int userType) {
+ private String getWipeMessage(int userType) {
switch (userType) {
case USER_TYPE_PRIMARY:
- return R.string.lock_failed_attempts_now_wiping_device;
+ return getString(R.string.lock_failed_attempts_now_wiping_device);
case USER_TYPE_MANAGED_PROFILE:
- return R.string.lock_failed_attempts_now_wiping_profile;
+ return mDevicePolicyManager.getString(WORK_PROFILE_LOCK_ATTEMPTS_FAILED,
+ () -> getString(R.string.lock_failed_attempts_now_wiping_profile));
case USER_TYPE_SECONDARY:
- return R.string.lock_failed_attempts_now_wiping_user;
+ return getString(R.string.lock_failed_attempts_now_wiping_user);
default:
throw new IllegalArgumentException("Unrecognized user type:" + userType);
}
@@ -311,7 +318,7 @@
private static final String ARG_BUTTON = "button";
private static final String ARG_DISMISS = "dismiss";
- static boolean show(FragmentManager from, String title, int message, int button,
+ static boolean show(FragmentManager from, String title, String message, int button,
boolean dismiss) {
LastTryDialog existent = (LastTryDialog) from.findFragmentByTag(TAG);
if (existent != null && !existent.isRemoving()) {
@@ -319,7 +326,7 @@
}
Bundle args = new Bundle();
args.putString(ARG_TITLE, title);
- args.putInt(ARG_MESSAGE, message);
+ args.putString(ARG_MESSAGE, message);
args.putInt(ARG_BUTTON, button);
args.putBoolean(ARG_DISMISS, dismiss);
@@ -349,7 +356,7 @@
public Dialog onCreateDialog(Bundle savedInstanceState) {
Dialog dialog = new AlertDialog.Builder(getActivity())
.setTitle(getArguments().getString(ARG_TITLE))
- .setMessage(getArguments().getInt(ARG_MESSAGE))
+ .setMessage(getArguments().getString(ARG_MESSAGE))
.setPositiveButton(getArguments().getInt(ARG_BUTTON), null)
.create();
dialog.setCanceledOnTouchOutside(false);
diff --git a/src/com/android/settings/password/ConfirmLockPassword.java b/src/com/android/settings/password/ConfirmLockPassword.java
index de32f13..df7e2dd 100644
--- a/src/com/android/settings/password/ConfirmLockPassword.java
+++ b/src/com/android/settings/password/ConfirmLockPassword.java
@@ -16,6 +16,16 @@
package com.android.settings.password;
+import static android.app.admin.DevicePolicyResources.Strings.UNDEFINED;
+import static android.app.admin.DevicePolicyResources.Strings.Settings.CONFIRM_WORK_PROFILE_PASSWORD_HEADER;
+import static android.app.admin.DevicePolicyResources.Strings.Settings.CONFIRM_WORK_PROFILE_PIN_HEADER;
+import static android.app.admin.DevicePolicyResources.Strings.Settings.WORK_PROFILE_CONFIRM_PASSWORD;
+import static android.app.admin.DevicePolicyResources.Strings.Settings.WORK_PROFILE_CONFIRM_PIN;
+import static android.app.admin.DevicePolicyResources.Strings.Settings.WORK_PROFILE_LAST_PASSWORD_ATTEMPT_BEFORE_WIPE;
+import static android.app.admin.DevicePolicyResources.Strings.Settings.WORK_PROFILE_LAST_PIN_ATTEMPT_BEFORE_WIPE;
+import static android.app.admin.DevicePolicyResources.Strings.Settings.WORK_PROFILE_PASSWORD_REQUIRED;
+import static android.app.admin.DevicePolicyResources.Strings.Settings.WORK_PROFILE_PIN_REQUIRED;
+
import android.annotation.Nullable;
import android.app.admin.DevicePolicyManager;
import android.app.settings.SettingsEnums;
@@ -73,6 +83,17 @@
R.string.lockpassword_strong_auth_required_work_password
};
+ private static final String[] DETAIL_TEXT_OVERRIDES = new String[] {
+ UNDEFINED,
+ UNDEFINED,
+ WORK_PROFILE_CONFIRM_PIN,
+ WORK_PROFILE_CONFIRM_PASSWORD,
+ UNDEFINED,
+ UNDEFINED,
+ WORK_PROFILE_PIN_REQUIRED,
+ WORK_PROFILE_PASSWORD_REQUIRED
+ };
+
public static class InternalActivity extends ConfirmLockPassword {
}
@@ -160,10 +181,10 @@
headerMessage = mDevicePolicyManager.getOrganizationNameForUser(mUserId);
}
if (TextUtils.isEmpty(headerMessage)) {
- headerMessage = getString(getDefaultHeader());
+ headerMessage = getDefaultHeader();
}
if (TextUtils.isEmpty(detailsMessage)) {
- detailsMessage = getString(getDefaultDetails());
+ detailsMessage = getDefaultDetails();
}
mGlifLayout.setHeaderText(headerMessage);
mGlifLayout.setDescriptionText(detailsMessage);
@@ -228,29 +249,37 @@
}, 5000);
}
- private int getDefaultHeader() {
+ private String getDefaultHeader() {
if (mFrp) {
- return mIsAlpha ? R.string.lockpassword_confirm_your_password_header_frp
- : R.string.lockpassword_confirm_your_pin_header_frp;
+ return mIsAlpha ? getString(R.string.lockpassword_confirm_your_password_header_frp)
+ : getString(R.string.lockpassword_confirm_your_pin_header_frp);
}
if (mIsManagedProfile) {
- return mIsAlpha ? R.string.lockpassword_confirm_your_work_password_header
- : R.string.lockpassword_confirm_your_work_pin_header;
+ if (mIsAlpha) {
+ return mDevicePolicyManager.getString(
+ CONFIRM_WORK_PROFILE_PASSWORD_HEADER,
+ () -> getString(
+ R.string.lockpassword_confirm_your_work_password_header));
+ }
+ return mDevicePolicyManager.getString(
+ CONFIRM_WORK_PROFILE_PIN_HEADER,
+ () -> getString(R.string.lockpassword_confirm_your_work_pin_header));
}
- return mIsAlpha ? R.string.lockpassword_confirm_your_password_header
- : R.string.lockpassword_confirm_your_pin_header;
+ return mIsAlpha ? getString(R.string.lockpassword_confirm_your_password_header)
+ : getString(R.string.lockpassword_confirm_your_pin_header);
}
- private int getDefaultDetails() {
+ private String getDefaultDetails() {
if (mFrp) {
- return mIsAlpha ? R.string.lockpassword_confirm_your_password_details_frp
- : R.string.lockpassword_confirm_your_pin_details_frp;
+ return mIsAlpha ? getString(R.string.lockpassword_confirm_your_password_details_frp)
+ : getString(R.string.lockpassword_confirm_your_pin_details_frp);
}
boolean isStrongAuthRequired = isStrongAuthRequired();
// Map boolean flags to an index by isStrongAuth << 2 + isManagedProfile << 1 + isAlpha.
int index = ((isStrongAuthRequired ? 1 : 0) << 2) + ((mIsManagedProfile ? 1 : 0) << 1)
+ (mIsAlpha ? 1 : 0);
- return DETAIL_TEXTS[index];
+ return mDevicePolicyManager.getString(
+ DETAIL_TEXT_OVERRIDES[index], () -> getString(DETAIL_TEXTS[index]));
}
private int getErrorMessage() {
@@ -259,7 +288,17 @@
}
@Override
- protected int getLastTryErrorMessage(int userType) {
+ protected String getLastTryOverrideErrorMessageId(int userType) {
+ if (userType == USER_TYPE_MANAGED_PROFILE) {
+ return mIsAlpha ? WORK_PROFILE_LAST_PASSWORD_ATTEMPT_BEFORE_WIPE
+ : WORK_PROFILE_LAST_PIN_ATTEMPT_BEFORE_WIPE;
+ }
+
+ return UNDEFINED;
+ }
+
+ @Override
+ protected int getLastTryDefaultErrorMessage(int userType) {
switch (userType) {
case USER_TYPE_PRIMARY:
return mIsAlpha ? R.string.lock_last_password_attempt_before_wipe_device
diff --git a/src/com/android/settings/password/ConfirmLockPattern.java b/src/com/android/settings/password/ConfirmLockPattern.java
index 6b9140a..f20a2a2 100644
--- a/src/com/android/settings/password/ConfirmLockPattern.java
+++ b/src/com/android/settings/password/ConfirmLockPattern.java
@@ -16,6 +16,12 @@
package com.android.settings.password;
+import static android.app.admin.DevicePolicyResources.Strings.UNDEFINED;
+import static android.app.admin.DevicePolicyResources.Strings.Settings.CONFIRM_WORK_PROFILE_PATTERN_HEADER;
+import static android.app.admin.DevicePolicyResources.Strings.Settings.WORK_PROFILE_CONFIRM_PATTERN;
+import static android.app.admin.DevicePolicyResources.Strings.Settings.WORK_PROFILE_LAST_PATTERN_ATTEMPT_BEFORE_WIPE;
+import static android.app.admin.DevicePolicyResources.Strings.Settings.WORK_PROFILE_PATTERN_REQUIRED;
+
import android.annotation.Nullable;
import android.annotation.SuppressLint;
import android.app.Activity;
@@ -258,19 +264,25 @@
mGlifLayout.getDescriptionTextView().setAlpha(0f);
}
- private int getDefaultDetails() {
+ private String getDefaultDetails() {
if (mFrp) {
- return R.string.lockpassword_confirm_your_pattern_details_frp;
+ return getString(R.string.lockpassword_confirm_your_pattern_details_frp);
}
final boolean isStrongAuthRequired = isStrongAuthRequired();
if (mIsManagedProfile) {
- return isStrongAuthRequired
- ? R.string.lockpassword_strong_auth_required_work_pattern
- : R.string.lockpassword_confirm_your_pattern_generic_profile;
+ if (isStrongAuthRequired) {
+ return mDevicePolicyManager.getString(WORK_PROFILE_PATTERN_REQUIRED,
+ () -> getString(
+ R.string.lockpassword_strong_auth_required_work_pattern));
+ } else {
+ return mDevicePolicyManager.getString(WORK_PROFILE_CONFIRM_PATTERN,
+ () -> getString(
+ R.string.lockpassword_confirm_your_pattern_generic_profile));
+ }
} else {
return isStrongAuthRequired
- ? R.string.lockpassword_strong_auth_required_device_pattern
- : R.string.lockpassword_confirm_your_pattern_generic;
+ ? getString(R.string.lockpassword_strong_auth_required_device_pattern)
+ : getString(R.string.lockpassword_confirm_your_pattern_generic);
}
}
@@ -352,11 +364,16 @@
mGlifLayout.getHeaderTextView().announceForAccessibility(mGlifLayout.getHeaderText());
}
- private int getDefaultHeader() {
- if (mFrp) return R.string.lockpassword_confirm_your_pattern_header_frp;
- return mIsManagedProfile
- ? R.string.lockpassword_confirm_your_work_pattern_header
- : R.string.lockpassword_confirm_your_pattern_header;
+ private String getDefaultHeader() {
+ if (mFrp) return getString(R.string.lockpassword_confirm_your_pattern_header_frp);
+
+ if (mIsManagedProfile) {
+ return mDevicePolicyManager.getString(
+ CONFIRM_WORK_PROFILE_PATTERN_HEADER,
+ () -> getString(R.string.lockpassword_confirm_your_work_pattern_header));
+ }
+
+ return getString(R.string.lockpassword_confirm_your_pattern_header);
}
private Runnable mClearPatternRunnable = new Runnable() {
@@ -550,7 +567,16 @@
}
@Override
- protected int getLastTryErrorMessage(int userType) {
+ protected String getLastTryOverrideErrorMessageId(int userType) {
+ if (userType == USER_TYPE_MANAGED_PROFILE) {
+ return WORK_PROFILE_LAST_PATTERN_ATTEMPT_BEFORE_WIPE;
+ }
+
+ return UNDEFINED;
+ }
+
+ @Override
+ protected int getLastTryDefaultErrorMessage(int userType) {
switch (userType) {
case USER_TYPE_PRIMARY:
return R.string.lock_last_pattern_attempt_before_wipe_device;
diff --git a/src/com/android/settings/security/LockUnificationPreferenceController.java b/src/com/android/settings/security/LockUnificationPreferenceController.java
index 798691f..ec7a6ed 100644
--- a/src/com/android/settings/security/LockUnificationPreferenceController.java
+++ b/src/com/android/settings/security/LockUnificationPreferenceController.java
@@ -16,6 +16,8 @@
package com.android.settings.security;
+import static android.app.admin.DevicePolicyResources.Strings.Settings.WORK_PROFILE_SET_UNLOCK_LAUNCH_PICKER_TITLE;
+
import static com.android.settings.security.SecuritySettings.UNIFY_LOCK_CONFIRM_PROFILE_REQUEST;
import static com.android.settings.security.SecuritySettings.UNUNIFY_LOCK_CONFIRM_DEVICE_REQUEST;
@@ -190,8 +192,8 @@
*/
public void startUnification() {
// Confirm profile lock
- final String title = mContext.getString(
- R.string.unlock_set_unlock_launch_picker_title_profile);
+ final String title = mDpm.getString(WORK_PROFILE_SET_UNLOCK_LAUNCH_PICKER_TITLE,
+ () -> mContext.getString(R.string.unlock_set_unlock_launch_picker_title_profile));
final ChooseLockSettingsHelper.Builder builder =
new ChooseLockSettingsHelper.Builder(mHost.getActivity(), mHost);
final boolean launched = builder.setRequestCode(UNIFY_LOCK_CONFIRM_PROFILE_REQUEST)
diff --git a/src/com/android/settings/security/UnificationConfirmationDialog.java b/src/com/android/settings/security/UnificationConfirmationDialog.java
index d8638bc..929751c 100644
--- a/src/com/android/settings/security/UnificationConfirmationDialog.java
+++ b/src/com/android/settings/security/UnificationConfirmationDialog.java
@@ -16,7 +16,11 @@
package com.android.settings.security;
+import static android.app.admin.DevicePolicyResources.Strings.Settings.WORK_PROFILE_UNIFY_LOCKS_DETAIL;
+import static android.app.admin.DevicePolicyResources.Strings.Settings.WORK_PROFILE_UNIFY_LOCKS_NONCOMPLIANT;
+
import android.app.Dialog;
+import android.app.admin.DevicePolicyManager;
import android.app.settings.SettingsEnums;
import android.content.DialogInterface;
import android.os.Bundle;
@@ -53,10 +57,16 @@
public Dialog onCreateDialog(Bundle savedInstanceState) {
final SecuritySettings parentFragment = ((SecuritySettings) getParentFragment());
final boolean compliant = getArguments().getBoolean(EXTRA_COMPLIANT);
+
+ String overrideMessageId = compliant ? WORK_PROFILE_UNIFY_LOCKS_DETAIL
+ : WORK_PROFILE_UNIFY_LOCKS_NONCOMPLIANT;
+ int defaultMessageId = compliant ? R.string.lock_settings_profile_unification_dialog_body
+ : R.string.lock_settings_profile_unification_dialog_uncompliant_body;
+
return new AlertDialog.Builder(getActivity())
.setTitle(R.string.lock_settings_profile_unification_dialog_title)
- .setMessage(compliant ? R.string.lock_settings_profile_unification_dialog_body
- : R.string.lock_settings_profile_unification_dialog_uncompliant_body)
+ .setMessage(getContext().getSystemService(DevicePolicyManager.class)
+ .getString(overrideMessageId, () -> getString(defaultMessageId)))
.setPositiveButton(
compliant ? R.string.lock_settings_profile_unification_dialog_confirm
: R.string
diff --git a/src/com/android/settings/security/screenlock/LockAfterTimeoutPreferenceController.java b/src/com/android/settings/security/screenlock/LockAfterTimeoutPreferenceController.java
index abeef2d..17e7e01 100644
--- a/src/com/android/settings/security/screenlock/LockAfterTimeoutPreferenceController.java
+++ b/src/com/android/settings/security/screenlock/LockAfterTimeoutPreferenceController.java
@@ -16,6 +16,7 @@
package com.android.settings.security.screenlock;
+import static android.app.admin.DevicePolicyResources.Strings.Settings.DISABLED_BY_IT_ADMIN_TITLE;
import static android.provider.Settings.System.SCREEN_OFF_TIMEOUT;
import android.app.admin.DevicePolicyManager;
@@ -123,7 +124,8 @@
private void updateLockAfterPreferenceSummary(TimeoutListPreference preference) {
final CharSequence summary;
if (preference.isDisabledByAdmin()) {
- summary = mContext.getText(R.string.disabled_by_policy_title);
+ summary = mDPM.getString(DISABLED_BY_IT_ADMIN_TITLE,
+ () -> mContext.getString(R.string.disabled_by_policy_title));
} else {
// Update summary message with current value
long currentTimeout = Settings.Secure.getLong(mContext.getContentResolver(),
diff --git a/src/com/android/settings/users/UserDialogs.java b/src/com/android/settings/users/UserDialogs.java
index 6915e95..3c19d7e 100644
--- a/src/com/android/settings/users/UserDialogs.java
+++ b/src/com/android/settings/users/UserDialogs.java
@@ -16,7 +16,11 @@
package com.android.settings.users;
+import static android.app.admin.DevicePolicyResources.Strings.Settings.WORK_PROFILE_CONFIRM_REMOVE_MESSAGE;
+import static android.app.admin.DevicePolicyResources.Strings.Settings.WORK_PROFILE_CONFIRM_REMOVE_TITLE;
+
import android.app.Dialog;
+import android.app.admin.DevicePolicyManager;
import android.content.Context;
import android.content.DialogInterface;
import android.content.pm.ApplicationInfo;
@@ -52,17 +56,20 @@
public static Dialog createRemoveDialog(Context context, int removingUserId,
DialogInterface.OnClickListener onConfirmListener) {
UserManager um = (UserManager) context.getSystemService(Context.USER_SERVICE);
+ DevicePolicyManager dpm = context.getSystemService(DevicePolicyManager.class);
UserInfo userInfo = um.getUserInfo(removingUserId);
AlertDialog.Builder builder = new AlertDialog.Builder(context)
.setPositiveButton(R.string.user_delete_button, onConfirmListener)
.setNegativeButton(android.R.string.cancel, null);
if (userInfo.isManagedProfile()) {
- builder.setTitle(R.string.work_profile_confirm_remove_title);
+ builder.setTitle(dpm.getString(WORK_PROFILE_CONFIRM_REMOVE_TITLE,
+ () -> context.getString(R.string.work_profile_confirm_remove_title)));
View view = createRemoveManagedUserDialogView(context, removingUserId);
if (view != null) {
builder.setView(view);
} else {
- builder.setMessage(R.string.work_profile_confirm_remove_message);
+ builder.setMessage(dpm.getString(WORK_PROFILE_CONFIRM_REMOVE_MESSAGE,
+ () -> context.getString(R.string.work_profile_confirm_remove_message)));
}
} else if (UserHandle.myUserId() == removingUserId) {
builder.setTitle(R.string.user_confirm_remove_self_title);
diff --git a/src/com/android/settings/utils/ManagedServiceSettings.java b/src/com/android/settings/utils/ManagedServiceSettings.java
index e372cb7..06a8fff 100644
--- a/src/com/android/settings/utils/ManagedServiceSettings.java
+++ b/src/com/android/settings/utils/ManagedServiceSettings.java
@@ -16,6 +16,8 @@
package com.android.settings.utils;
+import static android.app.admin.DevicePolicyResources.Strings.Settings.WORK_PROFILE_NOTIFICATION_LISTENER_BLOCKED;
+
import android.annotation.Nullable;
import android.app.Dialog;
import android.app.admin.DevicePolicyManager;
@@ -134,7 +136,9 @@
if (managedProfileId != UserHandle.USER_NULL
&& !mDpm.isNotificationListenerServicePermitted(
service.packageName, managedProfileId)) {
- pref.setSummary(R.string.work_profile_notification_access_blocked_summary);
+ pref.setSummary(mDpm.getString(WORK_PROFILE_NOTIFICATION_LISTENER_BLOCKED,
+ () -> getString(
+ R.string.work_profile_notification_access_blocked_summary)));
}
pref.setOnPreferenceChangeListener((preference, newValue) -> {
final boolean enable = (boolean) newValue;
diff --git a/src/com/android/settings/widget/EntityHeaderController.java b/src/com/android/settings/widget/EntityHeaderController.java
index 791d6ca..7c3ee79 100644
--- a/src/com/android/settings/widget/EntityHeaderController.java
+++ b/src/com/android/settings/widget/EntityHeaderController.java
@@ -289,7 +289,8 @@
@Override
public void onClick(View v) {
AppInfoBase.startAppInfoFragment(
- AppInfoDashboardFragment.class, R.string.application_info_label,
+ AppInfoDashboardFragment.class,
+ mActivity.getString(R.string.application_info_label),
mPackageName, mUid, mFragment, 0 /* request */,
mMetricsCategory);
}