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

Commit bf652ca5 authored by Eran Messeri's avatar Eran Messeri Committed by android-build-merger
Browse files

Merge "Require unlocked work profile to change notification settings" into pi-dev am: 5506097e

am: 04da30d2

Change-Id: I4d1dacfe41db1f76576a49e829113837212871b1
parents a7d91334 04da30d2
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 =