Restrict notification preferences for suspended apps

Bug: 26856390
Bug: 22776761
Change-Id: I7f03b8b95af93db66f12c5ac1cbf490b4ae0e73c
This commit is contained in:
Andrei Stingaceanu
2016-02-01 15:40:53 +00:00
parent eb3b52d411
commit da49313845
5 changed files with 30 additions and 19 deletions

View File

@@ -20,7 +20,7 @@
<!-- Apps without topics -->
<!-- Importance -->
<Preference
<com.android.settingslib.RestrictedPreference
android:key="importance_title"
android:title="@string/notification_importance_title"
android:order="2" />

View File

@@ -19,7 +19,7 @@
android:key="topic_notification_settings">
<!-- Importance -->
<Preference
<com.android.settingslib.RestrictedPreference
android:key="importance_title"
android:title="@string/notification_importance_title"
android:order="1" />

View File

@@ -83,7 +83,7 @@ public class AppNotificationSettings extends NotificationSettingsBase {
mBlock = (RestrictedSwitchPreference) findPreference(KEY_BLOCK);
mImportance = (ImportanceSeekBarPreference) findPreference(KEY_IMPORTANCE);
mImportanceReset = (LayoutPreference) findPreference(KEY_IMPORTANCE_RESET);
mImportanceTitle = findPreference(KEY_IMPORTANCE_TITLE);
mImportanceTitle = (RestrictedPreference) findPreference(KEY_IMPORTANCE_TITLE);
mPriority =
(RestrictedSwitchPreference) getPreferenceScreen().findPreference(KEY_BYPASS_DND);
mSensitive =
@@ -108,8 +108,7 @@ public class AppNotificationSettings extends NotificationSettingsBase {
setupBlockSwitch();
for (Notification.Topic topic : topics) {
RestrictedPreference topicPreference = new RestrictedPreference(getPrefContext());
topicPreference.setDisabledByAdmin(
RestrictedLockUtils.checkIfApplicationIsSuspended(mContext, mPkg, mUserId));
topicPreference.setDisabledByAdmin(mSuspendedAppsAdmin);
topicPreference.setKey(topic.getId());
topicPreference.setTitle(topic.getLabel());
// Create intent for this preference.
@@ -153,8 +152,7 @@ public class AppNotificationSettings extends NotificationSettingsBase {
}
private void setupBlockSwitch() {
mBlock.setDisabledByAdmin(
RestrictedLockUtils.checkIfApplicationIsSuspended(mContext, mPkg, mUserId));
mBlock.setDisabledByAdmin(mSuspendedAppsAdmin);
mBlock.setOnPreferenceChangeListener(new OnPreferenceChangeListener() {
@Override
public boolean onPreferenceChange(Preference preference, Object newValue) {

View File

@@ -20,6 +20,7 @@ import com.android.settings.R;
import com.android.settings.SettingsPreferenceFragment;
import com.android.settings.applications.AppInfoBase;
import com.android.settingslib.RestrictedLockUtils;
import com.android.settingslib.RestrictedPreference;
import com.android.settingslib.RestrictedSwitchPreference;
import com.android.settings.applications.LayoutPreference;
@@ -65,10 +66,11 @@ abstract public class NotificationSettingsBase extends SettingsPreferenceFragmen
protected PackageInfo mPkgInfo;
protected Notification.Topic mTopic;
protected ImportanceSeekBarPreference mImportance;
protected Preference mImportanceTitle;
protected RestrictedPreference mImportanceTitle;
protected LayoutPreference mImportanceReset;
protected RestrictedSwitchPreference mPriority;
protected RestrictedSwitchPreference mSensitive;
protected EnforcedAdmin mSuspendedAppsAdmin;
@Override
public void onActivityCreated(Bundle savedInstanceState) {
@@ -126,6 +128,9 @@ abstract public class NotificationSettingsBase extends SettingsPreferenceFragmen
// Will be null for app wide settings.
mTopic = args != null && args.containsKey(ARG_TOPIC)
? (Notification.Topic) args.getParcelable(ARG_TOPIC) : null;
mSuspendedAppsAdmin = RestrictedLockUtils.checkIfApplicationIsSuspended(
mContext, mPkg, mUserId);
}
@Override
@@ -136,22 +141,25 @@ abstract public class NotificationSettingsBase extends SettingsPreferenceFragmen
finish();
return;
}
EnforcedAdmin admin = RestrictedLockUtils.checkIfApplicationIsSuspended(
mSuspendedAppsAdmin = RestrictedLockUtils.checkIfApplicationIsSuspended(
mContext, mPkg, mUserId);
if (mImportance != null) {
mImportance.setDisabledByAdmin(admin);
mImportance.setDisabledByAdmin(mSuspendedAppsAdmin);
}
if (mPriority != null) {
mPriority.setDisabledByAdmin(admin);
mPriority.setDisabledByAdmin(mSuspendedAppsAdmin);
}
if (mSensitive != null) {
mSensitive.setDisabledByAdmin(admin);
mSensitive.setDisabledByAdmin(mSuspendedAppsAdmin);
}
if (mImportanceTitle != null) {
mImportanceTitle.setDisabledByAdmin(mSuspendedAppsAdmin);
}
}
protected void setupImportancePrefs(boolean isSystemApp, int importance) {
mImportance.setDisabledByAdmin(
RestrictedLockUtils.checkIfApplicationIsSuspended(mContext, mPkg, mUserId));
mImportance.setDisabledByAdmin(mSuspendedAppsAdmin);
mImportanceTitle.setDisabledByAdmin(mSuspendedAppsAdmin);
if (importance == Ranking.IMPORTANCE_UNSPECIFIED) {
mImportance.setVisible(false);
mImportanceReset.setVisible(false);
@@ -180,6 +188,12 @@ abstract public class NotificationSettingsBase extends SettingsPreferenceFragmen
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (mSuspendedAppsAdmin != null) {
RestrictedLockUtils.sendShowAdminSupportDetailsIntent(
getActivity(), mSuspendedAppsAdmin);
return;
}
mBackend.setImportance(mPkg, mUid, mTopic, Ranking.IMPORTANCE_UNSPECIFIED);
mImportanceReset.setVisible(false);
mImportance.setVisible(false);
@@ -211,8 +225,7 @@ abstract public class NotificationSettingsBase extends SettingsPreferenceFragmen
}
protected void setupPriorityPref(boolean priority) {
mPriority.setDisabledByAdmin(
RestrictedLockUtils.checkIfApplicationIsSuspended(mContext, mPkg, mUserId));
mPriority.setDisabledByAdmin(mSuspendedAppsAdmin);
mPriority.setChecked(priority);
mPriority.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
@Override
@@ -224,8 +237,7 @@ abstract public class NotificationSettingsBase extends SettingsPreferenceFragmen
}
protected void setupSensitivePref(boolean sensitive) {
mSensitive.setDisabledByAdmin(
RestrictedLockUtils.checkIfApplicationIsSuspended(mContext, mPkg, mUserId));
mSensitive.setDisabledByAdmin(mSuspendedAppsAdmin);
mSensitive.setChecked(sensitive);
mSensitive.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
@Override

View File

@@ -22,6 +22,7 @@ import com.android.settings.AppHeader;
import com.android.settings.R;
import com.android.settings.applications.LayoutPreference;
import com.android.settings.notification.NotificationBackend.TopicRow;
import com.android.settingslib.RestrictedPreference;
import com.android.settingslib.RestrictedSwitchPreference;
import android.app.NotificationManager;
@@ -67,7 +68,7 @@ public class TopicNotificationSettings extends NotificationSettingsBase {
mImportance = (ImportanceSeekBarPreference) findPreference(KEY_IMPORTANCE);
mImportanceReset = (LayoutPreference) findPreference(KEY_IMPORTANCE_RESET);
mImportanceTitle = findPreference(KEY_IMPORTANCE_TITLE);
mImportanceTitle = (RestrictedPreference) findPreference(KEY_IMPORTANCE_TITLE);
mPriority = (RestrictedSwitchPreference) findPreference(KEY_BYPASS_DND);
mSensitive = (RestrictedSwitchPreference) findPreference(KEY_SENSITIVE);