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

This commit is contained in:
Eran Messeri
2018-03-29 20:17:18 +00:00
committed by Android (Google) Code Review

View File

@@ -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_SECURE_NOTIFICATIONS;
import static android.app.admin.DevicePolicyManager.KEYGUARD_DISABLE_UNREDACTED_NOTIFICATIONS; import static android.app.admin.DevicePolicyManager.KEYGUARD_DISABLE_UNREDACTED_NOTIFICATIONS;
import android.app.ActivityManager;
import android.app.admin.DevicePolicyManager; import android.app.admin.DevicePolicyManager;
import android.app.KeyguardManager;
import android.content.ContentResolver; import android.content.ContentResolver;
import android.content.Context; import android.content.Context;
import android.content.Intent;
import android.database.ContentObserver; import android.database.ContentObserver;
import android.net.Uri; import android.net.Uri;
import android.os.Handler; import android.os.Handler;
import android.os.RemoteException;
import android.os.UserHandle; import android.os.UserHandle;
import android.os.UserManager; import android.os.UserManager;
import android.provider.Settings; import android.provider.Settings;
@@ -213,10 +217,6 @@ public class LockScreenNotificationPreferenceController extends AbstractPreferen
public boolean onPreferenceChange(Preference preference, Object newValue) { public boolean onPreferenceChange(Preference preference, Object newValue) {
final String key = preference.getKey(); final String key = preference.getKey();
if (TextUtils.equals(mWorkSettingKey, key)) { if (TextUtils.equals(mWorkSettingKey, key)) {
if (Utils.startQuietModeDialogIfNecessary(mContext, UserManager.get(mContext),
mProfileUserId)) {
return false;
}
final int val = Integer.parseInt((String) newValue); final int val = Integer.parseInt((String) newValue);
if (val == mLockscreenSelectedValueProfile) { if (val == mLockscreenSelectedValueProfile) {
return false; return false;
@@ -244,6 +244,39 @@ public class LockScreenNotificationPreferenceController extends AbstractPreferen
return false; 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, private void setRestrictedIfNotificationFeaturesDisabled(CharSequence entry,
CharSequence entryValue, int keyguardNotificationFeatures) { CharSequence entryValue, int keyguardNotificationFeatures) {
RestrictedLockUtils.EnforcedAdmin admin = RestrictedLockUtils.EnforcedAdmin admin =