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

Commit 5506097e authored by Eran Messeri's avatar Eran Messeri Committed by Android (Google) Code Review
Browse files

Merge "Require unlocked work profile to change notification settings" into pi-dev

parents 75f438cc e0856e6d
Loading
Loading
Loading
Loading
+37 −4
Original line number Diff line number Diff line
@@ -19,12 +19,16 @@ package com.android.settings.notification;
import static android.app.admin.DevicePolicyManager.KEYGUARD_DISABLE_SECURE_NOTIFICATIONS;
import static android.app.admin.DevicePolicyManager.KEYGUARD_DISABLE_UNREDACTED_NOTIFICATIONS;

import android.app.ActivityManager;
import android.app.admin.DevicePolicyManager;
import android.app.KeyguardManager;
import android.content.ContentResolver;
import android.content.Context;
import android.content.Intent;
import android.database.ContentObserver;
import android.net.Uri;
import android.os.Handler;
import android.os.RemoteException;
import android.os.UserHandle;
import android.os.UserManager;
import android.provider.Settings;
@@ -213,10 +217,6 @@ public class LockScreenNotificationPreferenceController extends AbstractPreferen
    public boolean onPreferenceChange(Preference preference, Object newValue) {
        final String key = preference.getKey();
        if (TextUtils.equals(mWorkSettingKey, key)) {
            if (Utils.startQuietModeDialogIfNecessary(mContext, UserManager.get(mContext),
                    mProfileUserId)) {
                return false;
            }
            final int val = Integer.parseInt((String) newValue);
            if (val == mLockscreenSelectedValueProfile) {
                return false;
@@ -244,6 +244,39 @@ public class LockScreenNotificationPreferenceController extends AbstractPreferen
        return false;
    }

    @Override
    public boolean handlePreferenceTreeClick(Preference preference) {
        final String key = preference.getKey();
        if (!TextUtils.equals(mWorkSettingKey, key)) {
            return false;
        }

        // Check if the profile is started, first.
        if (Utils.startQuietModeDialogIfNecessary(mContext, UserManager.get(mContext),
                    mProfileUserId)) {
            return true;
        }

        // Next, check if the profile is unlocked.
        KeyguardManager manager =
                (KeyguardManager) mContext.getSystemService(Context.KEYGUARD_SERVICE);
        if (manager.isDeviceLocked(mProfileUserId)) {
            //TODO: Figure out how to return the user to the current activity so they
            //don't have to navigate to the settings again.
            Intent intent = manager.createConfirmDeviceCredentialIntent(
                    null, null, mProfileUserId);
            try {
                ActivityManager.getService().startConfirmDeviceCredentialIntent(intent,
                        null /*options*/);
            } catch (RemoteException ignored) {
            }

            return true;
        }

        return false;
    }

    private void setRestrictedIfNotificationFeaturesDisabled(CharSequence entry,
            CharSequence entryValue, int keyguardNotificationFeatures) {
        RestrictedLockUtils.EnforcedAdmin admin =