Allow Device Management Role Holder to update Settings strings.

Test: manual
Bug: 188414370
Change-Id: I6e1a06619799a9e99382d791e72e2e4518f93cac
This commit is contained in:
Jonathan Scott
2022-01-19 15:19:08 +00:00
parent 47d115c3ff
commit e0d439472f
55 changed files with 788 additions and 231 deletions

View File

@@ -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 abstract class AdminActionPreferenceControllerBase extends
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;

View File

@@ -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 @@ public class AlwaysOnVpnCurrentUserPreferenceController
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

View File

@@ -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 @@ public class CaCertsCurrentUserPreferenceController extends CaCertsPreferenceCon
@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 @@ public class CaCertsCurrentUserPreferenceController extends CaCertsPreferenceCon
@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

View File

@@ -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 @@ import com.android.settingslib.enterprise.DeviceAdminStringProvider;
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 @@ class DeviceAdminStringProviderImpl implements DeviceAdminStringProvider {
@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

View File

@@ -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 @@ public class EnterprisePrivacyFeatureProviderImpl implements EnterprisePrivacyFe
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;
}

View File

@@ -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 @@ public class EnterpriseSetDefaultAppsListPreferenceController extends
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));

View File

@@ -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 @@ public class ImePreferenceController extends AbstractPreferenceController implem
@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

View File

@@ -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 @@ import com.android.settings.overlay.FeatureFactory;
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);
}

View File

@@ -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 @@ class PrivacyPreferenceControllerHelper {
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));
}
}