allow updating enterprise strings in sysUI
Bug: 188414133 Bug: 211422509 Bug: 188410712 Test: manual Change-Id: Ia595f95456064156f48b7f2a6b1b774a47e9f0af
This commit is contained in:
@@ -16,6 +16,12 @@
|
||||
|
||||
package com.android.systemui.biometrics;
|
||||
|
||||
import static android.app.admin.DevicePolicyResources.Strings.SystemUi.BIOMETRIC_DIALOG_WORK_LOCK_FAILED_ATTEMPTS;
|
||||
import static android.app.admin.DevicePolicyResources.Strings.SystemUi.BIOMETRIC_DIALOG_WORK_PASSWORD_LAST_ATTEMPT;
|
||||
import static android.app.admin.DevicePolicyResources.Strings.SystemUi.BIOMETRIC_DIALOG_WORK_PATTERN_LAST_ATTEMPT;
|
||||
import static android.app.admin.DevicePolicyResources.Strings.SystemUi.BIOMETRIC_DIALOG_WORK_PIN_LAST_ATTEMPT;
|
||||
import static android.app.admin.DevicePolicyResources.Strings.UNDEFINED;
|
||||
|
||||
import android.annotation.IntDef;
|
||||
import android.annotation.NonNull;
|
||||
import android.annotation.Nullable;
|
||||
@@ -374,7 +380,7 @@ public abstract class AuthCredentialView extends LinearLayout {
|
||||
final AlertDialog alertDialog = new AlertDialog.Builder(mContext)
|
||||
.setTitle(R.string.biometric_dialog_last_attempt_before_wipe_dialog_title)
|
||||
.setMessage(
|
||||
getLastAttemptBeforeWipeMessageRes(getUserTypeForWipe(), mCredentialType))
|
||||
getLastAttemptBeforeWipeMessage(getUserTypeForWipe(), mCredentialType))
|
||||
.setPositiveButton(android.R.string.ok, null)
|
||||
.create();
|
||||
alertDialog.getWindow().setType(WindowManager.LayoutParams.TYPE_STATUS_BAR_SUB_PANEL);
|
||||
@@ -383,7 +389,7 @@ public abstract class AuthCredentialView extends LinearLayout {
|
||||
|
||||
private void showNowWipingDialog() {
|
||||
final AlertDialog alertDialog = new AlertDialog.Builder(mContext)
|
||||
.setMessage(getNowWipingMessageRes(getUserTypeForWipe()))
|
||||
.setMessage(getNowWipingMessage(getUserTypeForWipe()))
|
||||
.setPositiveButton(R.string.biometric_dialog_now_wiping_dialog_dismiss, null)
|
||||
.setOnDismissListener(
|
||||
dialog -> mContainerView.animateAway(AuthDialogCallback.DISMISSED_ERROR))
|
||||
@@ -404,70 +410,121 @@ public abstract class AuthCredentialView extends LinearLayout {
|
||||
}
|
||||
}
|
||||
|
||||
private static @StringRes int getLastAttemptBeforeWipeMessageRes(
|
||||
private String getLastAttemptBeforeWipeMessage(
|
||||
@UserType int userType, @Utils.CredentialType int credentialType) {
|
||||
switch (userType) {
|
||||
case USER_TYPE_PRIMARY:
|
||||
return getLastAttemptBeforeWipeDeviceMessageRes(credentialType);
|
||||
return getLastAttemptBeforeWipeDeviceMessage(credentialType);
|
||||
case USER_TYPE_MANAGED_PROFILE:
|
||||
return getLastAttemptBeforeWipeProfileMessageRes(credentialType);
|
||||
return getLastAttemptBeforeWipeProfileMessage(credentialType);
|
||||
case USER_TYPE_SECONDARY:
|
||||
return getLastAttemptBeforeWipeUserMessageRes(credentialType);
|
||||
return getLastAttemptBeforeWipeUserMessage(credentialType);
|
||||
default:
|
||||
throw new IllegalArgumentException("Unrecognized user type:" + userType);
|
||||
}
|
||||
}
|
||||
|
||||
private static @StringRes int getLastAttemptBeforeWipeDeviceMessageRes(
|
||||
private String getLastAttemptBeforeWipeDeviceMessage(
|
||||
@Utils.CredentialType int credentialType) {
|
||||
switch (credentialType) {
|
||||
case Utils.CREDENTIAL_PIN:
|
||||
return R.string.biometric_dialog_last_pin_attempt_before_wipe_device;
|
||||
return mContext.getString(
|
||||
R.string.biometric_dialog_last_pin_attempt_before_wipe_device);
|
||||
case Utils.CREDENTIAL_PATTERN:
|
||||
return R.string.biometric_dialog_last_pattern_attempt_before_wipe_device;
|
||||
return mContext.getString(
|
||||
R.string.biometric_dialog_last_pattern_attempt_before_wipe_device);
|
||||
case Utils.CREDENTIAL_PASSWORD:
|
||||
default:
|
||||
return R.string.biometric_dialog_last_password_attempt_before_wipe_device;
|
||||
return mContext.getString(
|
||||
R.string.biometric_dialog_last_password_attempt_before_wipe_device);
|
||||
}
|
||||
}
|
||||
|
||||
private static @StringRes int getLastAttemptBeforeWipeProfileMessageRes(
|
||||
private String getLastAttemptBeforeWipeProfileMessage(
|
||||
@Utils.CredentialType int credentialType) {
|
||||
return mDevicePolicyManager.getString(
|
||||
getLastAttemptBeforeWipeProfileUpdatableStringId(credentialType),
|
||||
() -> getLastAttemptBeforeWipeProfileDefaultMessage(credentialType));
|
||||
}
|
||||
|
||||
private static String getLastAttemptBeforeWipeProfileUpdatableStringId(
|
||||
@Utils.CredentialType int credentialType) {
|
||||
switch (credentialType) {
|
||||
case Utils.CREDENTIAL_PIN:
|
||||
return R.string.biometric_dialog_last_pin_attempt_before_wipe_profile;
|
||||
return BIOMETRIC_DIALOG_WORK_PIN_LAST_ATTEMPT;
|
||||
case Utils.CREDENTIAL_PATTERN:
|
||||
return R.string.biometric_dialog_last_pattern_attempt_before_wipe_profile;
|
||||
return BIOMETRIC_DIALOG_WORK_PATTERN_LAST_ATTEMPT;
|
||||
case Utils.CREDENTIAL_PASSWORD:
|
||||
default:
|
||||
return R.string.biometric_dialog_last_password_attempt_before_wipe_profile;
|
||||
return BIOMETRIC_DIALOG_WORK_PASSWORD_LAST_ATTEMPT;
|
||||
}
|
||||
}
|
||||
|
||||
private static @StringRes int getLastAttemptBeforeWipeUserMessageRes(
|
||||
private String getLastAttemptBeforeWipeProfileDefaultMessage(
|
||||
@Utils.CredentialType int credentialType) {
|
||||
int resId;
|
||||
switch (credentialType) {
|
||||
case Utils.CREDENTIAL_PIN:
|
||||
return R.string.biometric_dialog_last_pin_attempt_before_wipe_user;
|
||||
resId = R.string.biometric_dialog_last_pin_attempt_before_wipe_profile;
|
||||
break;
|
||||
case Utils.CREDENTIAL_PATTERN:
|
||||
return R.string.biometric_dialog_last_pattern_attempt_before_wipe_user;
|
||||
resId = R.string.biometric_dialog_last_pattern_attempt_before_wipe_profile;
|
||||
break;
|
||||
case Utils.CREDENTIAL_PASSWORD:
|
||||
default:
|
||||
return R.string.biometric_dialog_last_password_attempt_before_wipe_user;
|
||||
resId = R.string.biometric_dialog_last_password_attempt_before_wipe_profile;
|
||||
}
|
||||
return mContext.getString(resId);
|
||||
}
|
||||
|
||||
private String getLastAttemptBeforeWipeUserMessage(
|
||||
@Utils.CredentialType int credentialType) {
|
||||
int resId;
|
||||
switch (credentialType) {
|
||||
case Utils.CREDENTIAL_PIN:
|
||||
resId = R.string.biometric_dialog_last_pin_attempt_before_wipe_user;
|
||||
break;
|
||||
case Utils.CREDENTIAL_PATTERN:
|
||||
resId = R.string.biometric_dialog_last_pattern_attempt_before_wipe_user;
|
||||
break;
|
||||
case Utils.CREDENTIAL_PASSWORD:
|
||||
default:
|
||||
resId = R.string.biometric_dialog_last_password_attempt_before_wipe_user;
|
||||
}
|
||||
return mContext.getString(resId);
|
||||
}
|
||||
|
||||
private String getNowWipingMessage(@UserType int userType) {
|
||||
return mDevicePolicyManager.getString(
|
||||
getNowWipingUpdatableStringId(userType),
|
||||
() -> getNowWipingDefaultMessage(userType));
|
||||
}
|
||||
|
||||
private String getNowWipingUpdatableStringId(@UserType int userType) {
|
||||
switch (userType) {
|
||||
case USER_TYPE_MANAGED_PROFILE:
|
||||
return BIOMETRIC_DIALOG_WORK_LOCK_FAILED_ATTEMPTS;
|
||||
default:
|
||||
return UNDEFINED;
|
||||
}
|
||||
}
|
||||
|
||||
private static @StringRes int getNowWipingMessageRes(@UserType int userType) {
|
||||
private String getNowWipingDefaultMessage(@UserType int userType) {
|
||||
int resId;
|
||||
switch (userType) {
|
||||
case USER_TYPE_PRIMARY:
|
||||
return R.string.biometric_dialog_failed_attempts_now_wiping_device;
|
||||
resId = R.string.biometric_dialog_failed_attempts_now_wiping_device;
|
||||
break;
|
||||
case USER_TYPE_MANAGED_PROFILE:
|
||||
return R.string.biometric_dialog_failed_attempts_now_wiping_profile;
|
||||
resId = R.string.biometric_dialog_failed_attempts_now_wiping_profile;
|
||||
break;
|
||||
case USER_TYPE_SECONDARY:
|
||||
return R.string.biometric_dialog_failed_attempts_now_wiping_user;
|
||||
resId = R.string.biometric_dialog_failed_attempts_now_wiping_user;
|
||||
break;
|
||||
default:
|
||||
throw new IllegalArgumentException("Unrecognized user type:" + userType);
|
||||
}
|
||||
return mContext.getString(resId);
|
||||
}
|
||||
|
||||
@Nullable
|
||||
|
||||
@@ -17,6 +17,7 @@
|
||||
package com.android.systemui.keyguard;
|
||||
|
||||
import static android.app.ActivityManager.TaskDescription;
|
||||
import static android.app.admin.DevicePolicyResources.Strings.SystemUi.WORK_LOCK_ACCESSIBILITY;
|
||||
|
||||
import android.annotation.ColorInt;
|
||||
import android.annotation.UserIdInt;
|
||||
@@ -92,8 +93,11 @@ public class WorkLockActivity extends Activity {
|
||||
|
||||
// Blank out the activity. When it is on-screen it will look like a Recents thumbnail with
|
||||
// redaction switched on.
|
||||
final DevicePolicyManager dpm = getSystemService(DevicePolicyManager.class);
|
||||
String contentDescription = dpm.getString(
|
||||
WORK_LOCK_ACCESSIBILITY, () -> getString(R.string.accessibility_desc_work_lock));
|
||||
final View blankView = new View(this);
|
||||
blankView.setContentDescription(getString(R.string.accessibility_desc_work_lock));
|
||||
blankView.setContentDescription(contentDescription);
|
||||
blankView.setBackgroundColor(getPrimaryColor());
|
||||
setContentView(blankView);
|
||||
}
|
||||
|
||||
@@ -16,6 +16,31 @@
|
||||
package com.android.systemui.qs;
|
||||
|
||||
import static android.app.admin.DevicePolicyManager.DEVICE_OWNER_TYPE_FINANCED;
|
||||
import static android.app.admin.DevicePolicyResources.Strings.SystemUi.QS_DIALOG_MANAGEMENT;
|
||||
import static android.app.admin.DevicePolicyResources.Strings.SystemUi.QS_DIALOG_MANAGEMENT_CA_CERT;
|
||||
import static android.app.admin.DevicePolicyResources.Strings.SystemUi.QS_DIALOG_MANAGEMENT_NAMED_VPN;
|
||||
import static android.app.admin.DevicePolicyResources.Strings.SystemUi.QS_DIALOG_MANAGEMENT_NETWORK;
|
||||
import static android.app.admin.DevicePolicyResources.Strings.SystemUi.QS_DIALOG_MANAGEMENT_TITLE;
|
||||
import static android.app.admin.DevicePolicyResources.Strings.SystemUi.QS_DIALOG_MANAGEMENT_TWO_NAMED_VPN;
|
||||
import static android.app.admin.DevicePolicyResources.Strings.SystemUi.QS_DIALOG_NAMED_MANAGEMENT;
|
||||
import static android.app.admin.DevicePolicyResources.Strings.SystemUi.QS_DIALOG_PERSONAL_PROFILE_NAMED_VPN;
|
||||
import static android.app.admin.DevicePolicyResources.Strings.SystemUi.QS_DIALOG_VIEW_POLICIES;
|
||||
import static android.app.admin.DevicePolicyResources.Strings.SystemUi.QS_DIALOG_WORK_PROFILE_CA_CERT;
|
||||
import static android.app.admin.DevicePolicyResources.Strings.SystemUi.QS_DIALOG_WORK_PROFILE_NAMED_VPN;
|
||||
import static android.app.admin.DevicePolicyResources.Strings.SystemUi.QS_DIALOG_WORK_PROFILE_NETWORK;
|
||||
import static android.app.admin.DevicePolicyResources.Strings.SystemUi.QS_MSG_MANAGEMENT;
|
||||
import static android.app.admin.DevicePolicyResources.Strings.SystemUi.QS_MSG_MANAGEMENT_MONITORING;
|
||||
import static android.app.admin.DevicePolicyResources.Strings.SystemUi.QS_MSG_MANAGEMENT_MULTIPLE_VPNS;
|
||||
import static android.app.admin.DevicePolicyResources.Strings.SystemUi.QS_MSG_MANAGEMENT_NAMED_VPN;
|
||||
import static android.app.admin.DevicePolicyResources.Strings.SystemUi.QS_MSG_NAMED_MANAGEMENT;
|
||||
import static android.app.admin.DevicePolicyResources.Strings.SystemUi.QS_MSG_NAMED_MANAGEMENT_MONITORING;
|
||||
import static android.app.admin.DevicePolicyResources.Strings.SystemUi.QS_MSG_NAMED_MANAGEMENT_MULTIPLE_VPNS;
|
||||
import static android.app.admin.DevicePolicyResources.Strings.SystemUi.QS_MSG_NAMED_MANAGEMENT_NAMED_VPN;
|
||||
import static android.app.admin.DevicePolicyResources.Strings.SystemUi.QS_MSG_NAMED_WORK_PROFILE_MONITORING;
|
||||
import static android.app.admin.DevicePolicyResources.Strings.SystemUi.QS_MSG_PERSONAL_PROFILE_NAMED_VPN;
|
||||
import static android.app.admin.DevicePolicyResources.Strings.SystemUi.QS_MSG_WORK_PROFILE_MONITORING;
|
||||
import static android.app.admin.DevicePolicyResources.Strings.SystemUi.QS_MSG_WORK_PROFILE_NAMED_VPN;
|
||||
import static android.app.admin.DevicePolicyResources.Strings.SystemUi.QS_MSG_WORK_PROFILE_NETWORK;
|
||||
import static android.view.ViewGroup.LayoutParams.MATCH_PARENT;
|
||||
import static android.view.ViewGroup.LayoutParams.WRAP_CONTENT;
|
||||
|
||||
@@ -24,6 +49,7 @@ import static com.android.systemui.qs.dagger.QSFragmentModule.QS_SECURITY_FOOTER
|
||||
import android.app.AlertDialog;
|
||||
import android.app.admin.DeviceAdminInfo;
|
||||
import android.app.admin.DevicePolicyEventLogger;
|
||||
import android.app.admin.DevicePolicyManager;
|
||||
import android.content.Context;
|
||||
import android.content.DialogInterface;
|
||||
import android.content.Intent;
|
||||
@@ -75,6 +101,7 @@ class QSSecurityFooter implements OnClickListener, DialogInterface.OnClickListen
|
||||
private final TextView mFooterText;
|
||||
private final ImageView mPrimaryFooterIcon;
|
||||
private final Context mContext;
|
||||
private final DevicePolicyManager mDpm;
|
||||
private final Callback mCallback = new Callback();
|
||||
private final SecurityController mSecurityController;
|
||||
private final ActivityStarter mActivityStarter;
|
||||
@@ -102,6 +129,7 @@ class QSSecurityFooter implements OnClickListener, DialogInterface.OnClickListen
|
||||
mPrimaryFooterIcon = mRootView.findViewById(R.id.primary_footer_icon);
|
||||
mFooterIconId = R.drawable.ic_info_outline;
|
||||
mContext = rootView.getContext();
|
||||
mDpm = rootView.getContext().getSystemService(DevicePolicyManager.class);
|
||||
mMainHandler = mainHandler;
|
||||
mActivityStarter = activityStarter;
|
||||
mSecurityController = securityController;
|
||||
@@ -254,87 +282,175 @@ class QSSecurityFooter implements OnClickListener, DialogInterface.OnClickListen
|
||||
return mContext.getString(R.string.quick_settings_disclosure_parental_controls);
|
||||
}
|
||||
if (isDeviceManaged || DEBUG_FORCE_VISIBLE) {
|
||||
if (hasCACerts || hasCACertsInWorkProfile || isNetworkLoggingEnabled) {
|
||||
if (organizationName == null) {
|
||||
return mContext.getString(
|
||||
R.string.quick_settings_disclosure_management_monitoring);
|
||||
}
|
||||
return mContext.getString(
|
||||
return getManagedDeviceFooterText(hasCACerts, hasCACertsInWorkProfile,
|
||||
isNetworkLoggingEnabled, vpnName, vpnNameWorkProfile, organizationName);
|
||||
}
|
||||
return getManagedAndPersonalProfileFooterText(hasWorkProfile, hasCACerts,
|
||||
hasCACertsInWorkProfile, isNetworkLoggingEnabled, vpnName, vpnNameWorkProfile,
|
||||
workProfileOrganizationName, isProfileOwnerOfOrganizationOwnedDevice,
|
||||
isWorkProfileOn);
|
||||
}
|
||||
|
||||
private String getManagedDeviceFooterText(
|
||||
boolean hasCACerts, boolean hasCACertsInWorkProfile, boolean isNetworkLoggingEnabled,
|
||||
String vpnName, String vpnNameWorkProfile, CharSequence organizationName) {
|
||||
if (hasCACerts || hasCACertsInWorkProfile || isNetworkLoggingEnabled) {
|
||||
return getManagedDeviceMonitoringText(organizationName);
|
||||
}
|
||||
if (vpnName != null || vpnNameWorkProfile != null) {
|
||||
return getManagedDeviceVpnText(vpnName, vpnNameWorkProfile, organizationName);
|
||||
}
|
||||
return getMangedDeviceGeneralText(organizationName);
|
||||
}
|
||||
|
||||
private String getManagedDeviceMonitoringText(CharSequence organizationName) {
|
||||
if (organizationName == null) {
|
||||
return mDpm.getString(
|
||||
QS_MSG_MANAGEMENT_MONITORING,
|
||||
() -> mContext.getString(
|
||||
R.string.quick_settings_disclosure_management_monitoring));
|
||||
}
|
||||
return mDpm.getString(
|
||||
QS_MSG_NAMED_MANAGEMENT_MONITORING,
|
||||
() -> mContext.getString(
|
||||
R.string.quick_settings_disclosure_named_management_monitoring,
|
||||
organizationName);
|
||||
organizationName),
|
||||
organizationName);
|
||||
}
|
||||
|
||||
private String getManagedDeviceVpnText(
|
||||
String vpnName, String vpnNameWorkProfile, CharSequence organizationName) {
|
||||
if (vpnName != null && vpnNameWorkProfile != null) {
|
||||
if (organizationName == null) {
|
||||
return mDpm.getString(
|
||||
QS_MSG_MANAGEMENT_MULTIPLE_VPNS,
|
||||
() -> mContext.getString(
|
||||
R.string.quick_settings_disclosure_management_vpns));
|
||||
}
|
||||
if (vpnName != null && vpnNameWorkProfile != null) {
|
||||
if (organizationName == null) {
|
||||
return mContext.getString(R.string.quick_settings_disclosure_management_vpns);
|
||||
}
|
||||
return mContext.getString(R.string.quick_settings_disclosure_named_management_vpns,
|
||||
organizationName);
|
||||
}
|
||||
if (vpnName != null || vpnNameWorkProfile != null) {
|
||||
if (organizationName == null) {
|
||||
return mContext.getString(
|
||||
return mDpm.getString(
|
||||
QS_MSG_NAMED_MANAGEMENT_MULTIPLE_VPNS,
|
||||
() -> mContext.getString(
|
||||
R.string.quick_settings_disclosure_named_management_vpns,
|
||||
organizationName),
|
||||
organizationName);
|
||||
}
|
||||
String name = vpnName != null ? vpnName : vpnNameWorkProfile;
|
||||
if (organizationName == null) {
|
||||
return mDpm.getString(
|
||||
QS_MSG_MANAGEMENT_NAMED_VPN,
|
||||
() -> mContext.getString(
|
||||
R.string.quick_settings_disclosure_management_named_vpn,
|
||||
vpnName != null ? vpnName : vpnNameWorkProfile);
|
||||
}
|
||||
return mContext.getString(
|
||||
name),
|
||||
name);
|
||||
}
|
||||
return mDpm.getString(
|
||||
QS_MSG_NAMED_MANAGEMENT_NAMED_VPN,
|
||||
() -> mContext.getString(
|
||||
R.string.quick_settings_disclosure_named_management_named_vpn,
|
||||
organizationName,
|
||||
vpnName != null ? vpnName : vpnNameWorkProfile);
|
||||
}
|
||||
if (organizationName == null) {
|
||||
return mContext.getString(R.string.quick_settings_disclosure_management);
|
||||
}
|
||||
if (isFinancedDevice()) {
|
||||
return mContext.getString(
|
||||
R.string.quick_settings_financed_disclosure_named_management,
|
||||
organizationName);
|
||||
} else {
|
||||
return mContext.getString(R.string.quick_settings_disclosure_named_management,
|
||||
organizationName);
|
||||
}
|
||||
} // end if(isDeviceManaged)
|
||||
name),
|
||||
organizationName,
|
||||
name);
|
||||
}
|
||||
|
||||
private String getMangedDeviceGeneralText(CharSequence organizationName) {
|
||||
if (organizationName == null) {
|
||||
return mDpm.getString(
|
||||
QS_MSG_MANAGEMENT,
|
||||
() -> mContext.getString(
|
||||
R.string.quick_settings_disclosure_management));
|
||||
}
|
||||
if (isFinancedDevice()) {
|
||||
return mContext.getString(
|
||||
R.string.quick_settings_financed_disclosure_named_management,
|
||||
organizationName);
|
||||
} else {
|
||||
return mDpm.getString(
|
||||
QS_MSG_NAMED_MANAGEMENT,
|
||||
() -> mContext.getString(
|
||||
R.string.quick_settings_disclosure_named_management,
|
||||
organizationName),
|
||||
organizationName);
|
||||
}
|
||||
}
|
||||
|
||||
private String getManagedAndPersonalProfileFooterText(boolean hasWorkProfile,
|
||||
boolean hasCACerts, boolean hasCACertsInWorkProfile, boolean isNetworkLoggingEnabled,
|
||||
String vpnName, String vpnNameWorkProfile, CharSequence workProfileOrganizationName,
|
||||
boolean isProfileOwnerOfOrganizationOwnedDevice, boolean isWorkProfileOn) {
|
||||
if (hasCACerts || (hasCACertsInWorkProfile && isWorkProfileOn)) {
|
||||
return getMonitoringText(
|
||||
hasCACerts, hasCACertsInWorkProfile, workProfileOrganizationName,
|
||||
isWorkProfileOn);
|
||||
}
|
||||
if (vpnName != null || (vpnNameWorkProfile != null && isWorkProfileOn)) {
|
||||
return getVpnText(hasWorkProfile, vpnName, vpnNameWorkProfile, isWorkProfileOn);
|
||||
}
|
||||
if (hasWorkProfile && isNetworkLoggingEnabled && isWorkProfileOn) {
|
||||
return getManagedProfileNetworkActivityText();
|
||||
}
|
||||
if (isProfileOwnerOfOrganizationOwnedDevice) {
|
||||
return getMangedDeviceGeneralText(workProfileOrganizationName);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
private String getMonitoringText(boolean hasCACerts, boolean hasCACertsInWorkProfile,
|
||||
CharSequence workProfileOrganizationName, boolean isWorkProfileOn) {
|
||||
if (hasCACertsInWorkProfile && isWorkProfileOn) {
|
||||
if (workProfileOrganizationName == null) {
|
||||
return mContext.getString(
|
||||
R.string.quick_settings_disclosure_managed_profile_monitoring);
|
||||
return mDpm.getString(
|
||||
QS_MSG_WORK_PROFILE_MONITORING,
|
||||
() -> mContext.getString(
|
||||
R.string.quick_settings_disclosure_managed_profile_monitoring));
|
||||
}
|
||||
return mContext.getString(
|
||||
R.string.quick_settings_disclosure_named_managed_profile_monitoring,
|
||||
return mDpm.getString(
|
||||
QS_MSG_NAMED_WORK_PROFILE_MONITORING,
|
||||
() -> mContext.getString(
|
||||
R.string.quick_settings_disclosure_named_managed_profile_monitoring,
|
||||
workProfileOrganizationName),
|
||||
workProfileOrganizationName);
|
||||
}
|
||||
if (hasCACerts) {
|
||||
return mContext.getString(R.string.quick_settings_disclosure_monitoring);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
private String getVpnText(boolean hasWorkProfile, String vpnName, String vpnNameWorkProfile,
|
||||
boolean isWorkProfileOn) {
|
||||
if (vpnName != null && vpnNameWorkProfile != null) {
|
||||
return mContext.getString(R.string.quick_settings_disclosure_vpns);
|
||||
}
|
||||
if (vpnNameWorkProfile != null && isWorkProfileOn) {
|
||||
return mContext.getString(R.string.quick_settings_disclosure_managed_profile_named_vpn,
|
||||
return mDpm.getString(
|
||||
QS_MSG_WORK_PROFILE_NAMED_VPN,
|
||||
() -> mContext.getString(
|
||||
R.string.quick_settings_disclosure_managed_profile_named_vpn,
|
||||
vpnNameWorkProfile),
|
||||
vpnNameWorkProfile);
|
||||
}
|
||||
if (vpnName != null) {
|
||||
if (hasWorkProfile) {
|
||||
return mContext.getString(
|
||||
R.string.quick_settings_disclosure_personal_profile_named_vpn,
|
||||
return mDpm.getString(
|
||||
QS_MSG_PERSONAL_PROFILE_NAMED_VPN,
|
||||
() -> mContext.getString(
|
||||
R.string.quick_settings_disclosure_personal_profile_named_vpn,
|
||||
vpnName),
|
||||
vpnName);
|
||||
}
|
||||
return mContext.getString(R.string.quick_settings_disclosure_named_vpn,
|
||||
vpnName);
|
||||
}
|
||||
if (hasWorkProfile && isNetworkLoggingEnabled && isWorkProfileOn) {
|
||||
return mContext.getString(
|
||||
R.string.quick_settings_disclosure_managed_profile_network_activity);
|
||||
}
|
||||
if (isProfileOwnerOfOrganizationOwnedDevice) {
|
||||
if (workProfileOrganizationName == null) {
|
||||
return mContext.getString(R.string.quick_settings_disclosure_management);
|
||||
}
|
||||
return mContext.getString(R.string.quick_settings_disclosure_named_management,
|
||||
workProfileOrganizationName);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
private String getManagedProfileNetworkActivityText() {
|
||||
return mDpm.getString(
|
||||
QS_MSG_WORK_PROFILE_NETWORK,
|
||||
() -> mContext.getString(
|
||||
R.string.quick_settings_disclosure_managed_profile_network_activity));
|
||||
}
|
||||
@Override
|
||||
public void onClick(DialogInterface dialog, int which) {
|
||||
if (which == DialogInterface.BUTTON_NEGATIVE) {
|
||||
@@ -494,7 +610,9 @@ class QSSecurityFooter implements OnClickListener, DialogInterface.OnClickListen
|
||||
|
||||
@VisibleForTesting
|
||||
String getSettingsButton() {
|
||||
return mContext.getString(R.string.monitoring_button_view_policies);
|
||||
return mDpm.getString(
|
||||
QS_DIALOG_VIEW_POLICIES,
|
||||
() -> mContext.getString(R.string.monitoring_button_view_policies));
|
||||
}
|
||||
|
||||
private String getPositiveButton() {
|
||||
@@ -520,11 +638,17 @@ class QSSecurityFooter implements OnClickListener, DialogInterface.OnClickListen
|
||||
return mContext.getString(R.string.monitoring_financed_description_named_management,
|
||||
organizationName, organizationName);
|
||||
} else {
|
||||
return mContext.getString(
|
||||
R.string.monitoring_description_named_management, organizationName);
|
||||
return mDpm.getString(
|
||||
QS_DIALOG_NAMED_MANAGEMENT,
|
||||
() -> mContext.getString(
|
||||
R.string.monitoring_description_named_management,
|
||||
organizationName),
|
||||
organizationName);
|
||||
}
|
||||
}
|
||||
return mContext.getString(R.string.monitoring_description_management);
|
||||
return mDpm.getString(
|
||||
QS_DIALOG_MANAGEMENT,
|
||||
() -> mContext.getString(R.string.monitoring_description_management));
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@@ -532,11 +656,16 @@ class QSSecurityFooter implements OnClickListener, DialogInterface.OnClickListen
|
||||
boolean hasCACertsInWorkProfile) {
|
||||
if (!(hasCACerts || hasCACertsInWorkProfile)) return null;
|
||||
if (isDeviceManaged) {
|
||||
return mContext.getString(R.string.monitoring_description_management_ca_certificate);
|
||||
return mDpm.getString(
|
||||
QS_DIALOG_MANAGEMENT_CA_CERT,
|
||||
() -> mContext.getString(
|
||||
R.string.monitoring_description_management_ca_certificate));
|
||||
}
|
||||
if (hasCACertsInWorkProfile) {
|
||||
return mContext.getString(
|
||||
R.string.monitoring_description_managed_profile_ca_certificate);
|
||||
return mDpm.getString(
|
||||
QS_DIALOG_WORK_PROFILE_CA_CERT,
|
||||
() -> mContext.getString(
|
||||
R.string.monitoring_description_managed_profile_ca_certificate));
|
||||
}
|
||||
return mContext.getString(R.string.monitoring_description_ca_certificate);
|
||||
}
|
||||
@@ -546,10 +675,15 @@ class QSSecurityFooter implements OnClickListener, DialogInterface.OnClickListen
|
||||
boolean isNetworkLoggingEnabled) {
|
||||
if (!isNetworkLoggingEnabled) return null;
|
||||
if (isDeviceManaged) {
|
||||
return mContext.getString(R.string.monitoring_description_management_network_logging);
|
||||
return mDpm.getString(
|
||||
QS_DIALOG_MANAGEMENT_NETWORK,
|
||||
() -> mContext.getString(
|
||||
R.string.monitoring_description_management_network_logging));
|
||||
} else {
|
||||
return mContext.getString(
|
||||
R.string.monitoring_description_managed_profile_network_logging);
|
||||
return mDpm.getString(
|
||||
QS_DIALOG_WORK_PROFILE_NETWORK,
|
||||
() -> mContext.getString(
|
||||
R.string.monitoring_description_managed_profile_network_logging));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -560,23 +694,46 @@ class QSSecurityFooter implements OnClickListener, DialogInterface.OnClickListen
|
||||
final SpannableStringBuilder message = new SpannableStringBuilder();
|
||||
if (isDeviceManaged) {
|
||||
if (vpnName != null && vpnNameWorkProfile != null) {
|
||||
message.append(mContext.getString(R.string.monitoring_description_two_named_vpns,
|
||||
vpnName, vpnNameWorkProfile));
|
||||
String namedVpns = mDpm.getString(
|
||||
QS_DIALOG_MANAGEMENT_TWO_NAMED_VPN,
|
||||
() -> mContext.getString(
|
||||
R.string.monitoring_description_two_named_vpns,
|
||||
vpnName, vpnNameWorkProfile),
|
||||
vpnName, vpnNameWorkProfile);
|
||||
message.append(namedVpns);
|
||||
} else {
|
||||
message.append(mContext.getString(R.string.monitoring_description_named_vpn,
|
||||
vpnName != null ? vpnName : vpnNameWorkProfile));
|
||||
String name = vpnName != null ? vpnName : vpnNameWorkProfile;
|
||||
String namedVp = mDpm.getString(
|
||||
QS_DIALOG_MANAGEMENT_NAMED_VPN,
|
||||
() -> mContext.getString(R.string.monitoring_description_named_vpn, name),
|
||||
name);
|
||||
message.append(namedVp);
|
||||
}
|
||||
} else {
|
||||
if (vpnName != null && vpnNameWorkProfile != null) {
|
||||
message.append(mContext.getString(R.string.monitoring_description_two_named_vpns,
|
||||
vpnName, vpnNameWorkProfile));
|
||||
String namedVpns = mDpm.getString(
|
||||
QS_DIALOG_MANAGEMENT_TWO_NAMED_VPN,
|
||||
() -> mContext.getString(
|
||||
R.string.monitoring_description_two_named_vpns,
|
||||
vpnName, vpnNameWorkProfile),
|
||||
vpnName, vpnNameWorkProfile);
|
||||
message.append(namedVpns);
|
||||
} else if (vpnNameWorkProfile != null) {
|
||||
message.append(mContext.getString(
|
||||
R.string.monitoring_description_managed_profile_named_vpn,
|
||||
vpnNameWorkProfile));
|
||||
String namedVpn = mDpm.getString(
|
||||
QS_DIALOG_WORK_PROFILE_NAMED_VPN,
|
||||
() -> mContext.getString(
|
||||
R.string.monitoring_description_managed_profile_named_vpn,
|
||||
vpnNameWorkProfile),
|
||||
vpnNameWorkProfile);
|
||||
message.append(namedVpn);
|
||||
} else if (hasWorkProfile) {
|
||||
message.append(mContext.getString(
|
||||
R.string.monitoring_description_personal_profile_named_vpn, vpnName));
|
||||
String namedVpn = mDpm.getString(
|
||||
QS_DIALOG_PERSONAL_PROFILE_NAMED_VPN,
|
||||
() -> mContext.getString(
|
||||
R.string.monitoring_description_personal_profile_named_vpn,
|
||||
vpnName),
|
||||
vpnName);
|
||||
message.append(namedVpn);
|
||||
} else {
|
||||
message.append(mContext.getString(R.string.monitoring_description_named_vpn,
|
||||
vpnName));
|
||||
@@ -594,7 +751,9 @@ class QSSecurityFooter implements OnClickListener, DialogInterface.OnClickListen
|
||||
return mContext.getString(R.string.monitoring_title_financed_device,
|
||||
deviceOwnerOrganization);
|
||||
} else {
|
||||
return mContext.getString(R.string.monitoring_title_device_owned);
|
||||
return mDpm.getString(
|
||||
QS_DIALOG_MANAGEMENT_TITLE,
|
||||
() -> mContext.getString(R.string.monitoring_title_device_owned));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -16,6 +16,9 @@
|
||||
|
||||
package com.android.systemui.qs.tiles;
|
||||
|
||||
import static android.app.admin.DevicePolicyResources.Strings.SystemUi.QS_WORK_PROFILE_LABEL;
|
||||
|
||||
import android.app.admin.DevicePolicyManager;
|
||||
import android.content.Intent;
|
||||
import android.os.Handler;
|
||||
import android.os.Looper;
|
||||
@@ -100,7 +103,9 @@ public class WorkModeTile extends QSTileImpl<BooleanState> implements
|
||||
|
||||
@Override
|
||||
public CharSequence getTileLabel() {
|
||||
return mContext.getString(R.string.quick_settings_work_mode_label);
|
||||
DevicePolicyManager dpm = mContext.getSystemService(DevicePolicyManager.class);
|
||||
return dpm.getString(QS_WORK_PROFILE_LABEL,
|
||||
() -> mContext.getString(R.string.quick_settings_work_mode_label));
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -17,6 +17,7 @@
|
||||
package com.android.systemui.statusbar;
|
||||
|
||||
import static android.app.admin.DevicePolicyManager.DEVICE_OWNER_TYPE_FINANCED;
|
||||
import static android.app.admin.DevicePolicyResources.Strings.SystemUi.KEYGUARD_MANAGEMENT_DISCLOSURE;
|
||||
import static android.view.View.GONE;
|
||||
import static android.view.View.VISIBLE;
|
||||
|
||||
@@ -343,7 +344,9 @@ public class KeyguardIndicationController {
|
||||
private CharSequence getDisclosureText(@Nullable CharSequence organizationName) {
|
||||
final Resources packageResources = mContext.getResources();
|
||||
if (organizationName == null) {
|
||||
return packageResources.getText(R.string.do_disclosure_generic);
|
||||
return mDevicePolicyManager.getString(
|
||||
KEYGUARD_MANAGEMENT_DISCLOSURE,
|
||||
() -> packageResources.getString(R.string.do_disclosure_generic));
|
||||
} else if (mDevicePolicyManager.isDeviceManaged()
|
||||
&& mDevicePolicyManager.getDeviceOwnerType(
|
||||
mDevicePolicyManager.getDeviceOwnerComponentOnAnyUser())
|
||||
@@ -351,7 +354,10 @@ public class KeyguardIndicationController {
|
||||
return packageResources.getString(R.string.do_financed_disclosure_with_name,
|
||||
organizationName);
|
||||
} else {
|
||||
return packageResources.getString(R.string.do_disclosure_with_name,
|
||||
return mDevicePolicyManager.getString(
|
||||
KEYGUARD_MANAGEMENT_DISCLOSURE,
|
||||
() -> packageResources.getString(
|
||||
R.string.do_disclosure_with_name, organizationName),
|
||||
organizationName);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -16,12 +16,15 @@
|
||||
|
||||
package com.android.systemui.statusbar.phone;
|
||||
|
||||
import static android.app.admin.DevicePolicyResources.Strings.SystemUi.STATUS_BAR_WORK_ICON_ACCESSIBILITY;
|
||||
|
||||
import android.annotation.Nullable;
|
||||
import android.app.ActivityTaskManager;
|
||||
import android.app.AlarmManager;
|
||||
import android.app.AlarmManager.AlarmClockInfo;
|
||||
import android.app.IActivityManager;
|
||||
import android.app.SynchronousUserSwitchObserver;
|
||||
import android.app.admin.DevicePolicyManager;
|
||||
import android.content.BroadcastReceiver;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
@@ -132,6 +135,7 @@ public class PhoneStatusBarPolicy
|
||||
private final UserInfoController mUserInfoController;
|
||||
private final IActivityManager mIActivityManager;
|
||||
private final UserManager mUserManager;
|
||||
private final DevicePolicyManager mDevicePolicyManager;
|
||||
private final StatusBarIconController mIconController;
|
||||
private final CommandQueue mCommandQueue;
|
||||
private final BroadcastDispatcher mBroadcastDispatcher;
|
||||
@@ -172,7 +176,7 @@ public class PhoneStatusBarPolicy
|
||||
LocationController locationController,
|
||||
SensorPrivacyController sensorPrivacyController, IActivityManager iActivityManager,
|
||||
AlarmManager alarmManager, UserManager userManager,
|
||||
RecordingController recordingController,
|
||||
DevicePolicyManager devicePolicyManager, RecordingController recordingController,
|
||||
@Nullable TelecomManager telecomManager, @DisplayId int displayId,
|
||||
@Main SharedPreferences sharedPreferences, DateFormatUtil dateFormatUtil,
|
||||
RingerModeTracker ringerModeTracker,
|
||||
@@ -190,6 +194,7 @@ public class PhoneStatusBarPolicy
|
||||
mUserInfoController = userInfoController;
|
||||
mIActivityManager = iActivityManager;
|
||||
mUserManager = userManager;
|
||||
mDevicePolicyManager = devicePolicyManager;
|
||||
mRotationLockController = rotationLockController;
|
||||
mDataSaver = dataSaverController;
|
||||
mZenController = zenModeController;
|
||||
@@ -288,7 +293,7 @@ public class PhoneStatusBarPolicy
|
||||
|
||||
// managed profile
|
||||
mIconController.setIcon(mSlotManagedProfile, R.drawable.stat_sys_managed_profile_status,
|
||||
mResources.getString(R.string.accessibility_managed_profile));
|
||||
getManagedProfileAccessibilityString());
|
||||
mIconController.setIconVisibility(mSlotManagedProfile, mManagedProfileIconVisible);
|
||||
|
||||
// data saver
|
||||
@@ -343,6 +348,12 @@ public class PhoneStatusBarPolicy
|
||||
mCommandQueue.addCallback(this);
|
||||
}
|
||||
|
||||
private String getManagedProfileAccessibilityString() {
|
||||
return mDevicePolicyManager.getString(
|
||||
STATUS_BAR_WORK_ICON_ACCESSIBILITY,
|
||||
() -> mResources.getString(R.string.accessibility_managed_profile));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onZenChanged(int zen) {
|
||||
updateVolumeZen();
|
||||
@@ -525,7 +536,7 @@ public class PhoneStatusBarPolicy
|
||||
showIcon = true;
|
||||
mIconController.setIcon(mSlotManagedProfile,
|
||||
R.drawable.stat_sys_managed_profile_status,
|
||||
mResources.getString(R.string.accessibility_managed_profile));
|
||||
getManagedProfileAccessibilityString());
|
||||
} else {
|
||||
showIcon = false;
|
||||
}
|
||||
|
||||
@@ -207,6 +207,9 @@ public class KeyguardIndicationControllerTest extends SysuiTestCase {
|
||||
.thenReturn(DEVICE_OWNER_COMPONENT);
|
||||
when(mDevicePolicyManager.getDeviceOwnerType(DEVICE_OWNER_COMPONENT))
|
||||
.thenReturn(DEVICE_OWNER_TYPE_DEFAULT);
|
||||
when(mDevicePolicyManager.getString(anyString(), any())).thenReturn(mDisclosureGeneric);
|
||||
when(mDevicePolicyManager.getString(anyString(), any(), anyString()))
|
||||
.thenReturn(mDisclosureWithOrganization);
|
||||
|
||||
mWakeLock = new WakeLockFake();
|
||||
mWakeLockBuilder = new WakeLockFake.Builder(mContext);
|
||||
|
||||
Reference in New Issue
Block a user