From 2db8240b87238bc45dfbb4b0eec70a3f30f194a7 Mon Sep 17 00:00:00 2001 From: Esteban Talavera Date: Wed, 5 Apr 2017 16:31:10 +0100 Subject: [PATCH] Show when work profile notifications are blocked for listener Bug: 36657192 Test: m RunSettingsRoboTests Change-Id: If6a8715b9a5a9ea893728c8ce7708e4c4154fb80 (cherry picked from commit ee349792dd4d34bbbdc10446c88ce5f370d5347c) --- res/values/strings.xml | 4 ++++ .../settings/utils/ManagedServiceSettings.java | 16 ++++++++++++++-- 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/res/values/strings.xml b/res/values/strings.xml index 41925a5c6ed..58703a5a2d9 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -6604,6 +6604,10 @@ Notification access + + Access to work profile notifications is blocked + Apps cannot read notifications diff --git a/src/com/android/settings/utils/ManagedServiceSettings.java b/src/com/android/settings/utils/ManagedServiceSettings.java index eccda7918c1..1dc6ae561fa 100644 --- a/src/com/android/settings/utils/ManagedServiceSettings.java +++ b/src/com/android/settings/utils/ManagedServiceSettings.java @@ -19,8 +19,8 @@ package com.android.settings.utils; import android.annotation.Nullable; import android.app.AlertDialog; import android.app.Dialog; -import android.app.DialogFragment; import android.app.Fragment; +import android.app.admin.DevicePolicyManager; import android.content.ComponentName; import android.content.Context; import android.content.DialogInterface; @@ -28,15 +28,17 @@ import android.content.pm.PackageItemInfo; import android.content.pm.PackageManager; import android.content.pm.ServiceInfo; import android.os.Bundle; +import android.os.UserHandle; +import android.os.UserManager; import android.support.v14.preference.SwitchPreference; import android.support.v7.preference.Preference; import android.support.v7.preference.Preference.OnPreferenceChangeListener; import android.support.v7.preference.PreferenceScreen; import android.view.View; -import android.widget.TextView; import com.android.internal.logging.nano.MetricsProto; import com.android.settings.R; +import com.android.settings.Utils; import com.android.settings.core.instrumentation.InstrumentedDialogFragment; import com.android.settings.notification.EmptyTextSettings; @@ -48,6 +50,7 @@ public abstract class ManagedServiceSettings extends EmptyTextSettings { protected Context mContext; private PackageManager mPM; + private DevicePolicyManager mDpm; protected ServiceListing mServiceListing; abstract protected Config getConfig(); @@ -62,6 +65,7 @@ public abstract class ManagedServiceSettings extends EmptyTextSettings { mContext = getActivity(); mPM = mContext.getPackageManager(); + mDpm = (DevicePolicyManager) mContext.getSystemService(Context.DEVICE_POLICY_SERVICE); mServiceListing = new ServiceListing(mContext, mConfig); mServiceListing.addCallback(new ServiceListing.Callback() { @Override @@ -92,6 +96,9 @@ public abstract class ManagedServiceSettings extends EmptyTextSettings { } private void updateList(List services) { + UserManager um = (UserManager) mContext.getSystemService(Context.USER_SERVICE); + final int managedProfileId = Utils.getManagedProfileId(um, UserHandle.myUserId()); + final PreferenceScreen screen = getPreferenceScreen(); screen.removeAll(); Collections.sort(services, new PackageItemInfo.DisplayNameComparator(mPM)); @@ -103,6 +110,11 @@ public abstract class ManagedServiceSettings extends EmptyTextSettings { pref.setIcon(service.loadIcon(mPM)); pref.setTitle(title); pref.setChecked(mServiceListing.isEnabled(cn)); + if (managedProfileId != UserHandle.USER_NULL + && !mDpm.isNotificationListenerServicePermitted( + service.packageName, managedProfileId)) { + pref.setSummary(R.string.work_profile_notification_access_blocked_summary); + } pref.setOnPreferenceChangeListener(new OnPreferenceChangeListener() { @Override public boolean onPreferenceChange(Preference preference, Object newValue) {