Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c3dbc3ff authored by Jonathan Scott's avatar Jonathan Scott Committed by Android (Google) Code Review
Browse files

Merge "Allow Device Management Role Holder to update Settings strings."

parents 17c47f14 e0d43947
Loading
Loading
Loading
Loading
+15 −2
Original line number Diff line number Diff line
@@ -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.AccountManager;
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 @@ public class MainClear extends InstrumentedFragment implements OnGlobalLayoutLis
            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);
            }

+24 −6
Original line number Diff line number Diff line
@@ -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 @@ public class RemoteBugreportActivity extends Activity {
    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 @@ public class RemoteBugreportActivity extends Activity {
        } else if (notificationType == DevicePolicyManager.NOTIFICATION_BUGREPORT_STARTED
                || notificationType
                        == DevicePolicyManager.NOTIFICATION_BUGREPORT_FINISHED_NOT_ACCEPTED) {
            AlertDialog dialog = new AlertDialog.Builder(this)
                    .setTitle(R.string.share_remote_bugreport_dialog_title)
                    .setMessage(notificationType

            int defaultMessageId =  notificationType
                    == DevicePolicyManager.NOTIFICATION_BUGREPORT_STARTED
                    ? R.string.share_remote_bugreport_dialog_message
                            : R.string.share_remote_bugreport_dialog_message_finished)
                    : 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(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) {
+9 −2
Original line number Diff line number Diff line
@@ -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 @@ public class TrustedCredentialsSettings extends InstrumentedFragment

    private static final String TAG = "TrustedCredentialsSettings";

    private DevicePolicyManager mDevicePolicyManager;
    private UserManager mUserManager;
    private KeyguardManager mKeyguardManager;
    private int mTrustAllCaUserId;
@@ -179,6 +182,7 @@ public class TrustedCredentialsSettings extends InstrumentedFragment
    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 @@ public class TrustedCredentialsSettings extends InstrumentedFragment

            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);

+39 −11
Original line number Diff line number Diff line
@@ -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 static android.provider.Settings.EXTRA_AUTHORITIES;

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 @@ public class AccountPreferenceController extends AbstractPreferenceController
    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 @@ public class AccountPreferenceController extends AbstractPreferenceController
            @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 @@ public class AccountPreferenceController extends AbstractPreferenceController
                        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 @@ public class AccountPreferenceController extends AbstractPreferenceController
                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 @@ public class AccountPreferenceController extends AbstractPreferenceController
            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 @@ public class AccountPreferenceController extends AbstractPreferenceController
            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 @@ public class AccountPreferenceController extends AbstractPreferenceController
        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 @@ public class AccountPreferenceController extends AbstractPreferenceController
    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 @@ public class AccountPreferenceController extends AbstractPreferenceController
            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 @@ public class AccountPreferenceController extends AbstractPreferenceController
            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) {
+17 −3
Original line number Diff line number Diff line
@@ -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 @@ public class AccountSyncSettings extends AccountPreferenceBase {
        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));
    }

Loading