Suppress notif block/silence settings for essential packages.
Companion to change I6b8fa374.
Bug: 31360343
Test: Manual. With config_nonBlockableNotificationPackages
set to include com.android.dialer, examine Dialer's
notification settings. Be sure to test with advanced
notification controls enabled in System UI Tuner.
Change-Id: Ifbe13acf4cb02d6642f5c80e000f5b558f289920
diff --git a/src/com/android/settings/notification/AppNotificationSettings.java b/src/com/android/settings/notification/AppNotificationSettings.java
index e7f15e5..fd7a750 100644
--- a/src/com/android/settings/notification/AppNotificationSettings.java
+++ b/src/com/android/settings/notification/AppNotificationSettings.java
@@ -90,7 +90,8 @@
rows.put(mAppRow.pkg, mAppRow);
collectConfigActivities(rows);
- setupImportancePrefs(mAppRow.systemApp, mAppRow.appImportance, mAppRow.banned);
+ setupImportancePrefs(mAppRow.cantBlock, mAppRow.cantSilence,
+ mAppRow.appImportance, mAppRow.banned);
setupPriorityPref(mAppRow.appBypassDnd);
setupVisOverridePref(mAppRow.appVisOverride);
updateDependents(mAppRow.appImportance);
diff --git a/src/com/android/settings/notification/NotificationBackend.java b/src/com/android/settings/notification/NotificationBackend.java
index 1229b9e..f8c6788 100644
--- a/src/com/android/settings/notification/NotificationBackend.java
+++ b/src/com/android/settings/notification/NotificationBackend.java
@@ -59,14 +59,14 @@
public AppRow loadAppRow(Context context, PackageManager pm, PackageInfo app) {
final AppRow row = loadAppRow(context, pm, app.applicationInfo);
- row.systemApp = Utils.isSystemPackage(context.getResources(), pm, app);
+ row.cantBlock = Utils.isSystemPackage(context.getResources(), pm, app);
final String[] nonBlockablePkgs = context.getResources().getStringArray(
com.android.internal.R.array.config_nonBlockableNotificationPackages);
if (nonBlockablePkgs != null) {
int N = nonBlockablePkgs.length;
for (int i = 0; i < N; i++) {
if (app.packageName.equals(nonBlockablePkgs[i])) {
- row.systemApp = true;
+ row.cantBlock = row.cantSilence = true;
}
}
}
@@ -153,7 +153,8 @@
public Intent settingsIntent;
public boolean banned;
public boolean first; // first app in section
- public boolean systemApp;
+ public boolean cantBlock;
+ public boolean cantSilence;
public int appImportance;
public boolean appBypassDnd;
public int appVisOverride;
diff --git a/src/com/android/settings/notification/NotificationSettingsBase.java b/src/com/android/settings/notification/NotificationSettingsBase.java
index 3469cc0..0e637a7 100644
--- a/src/com/android/settings/notification/NotificationSettingsBase.java
+++ b/src/com/android/settings/notification/NotificationSettingsBase.java
@@ -154,8 +154,9 @@
}
}
- protected void setupImportancePrefs(boolean notBlockable, int importance, boolean banned) {
- if (mShowSlider) {
+ protected void setupImportancePrefs(boolean notBlockable, boolean notSilenceable,
+ int importance, boolean banned) {
+ if (mShowSlider && !notSilenceable) {
setVisible(mBlock, false);
setVisible(mSilent, false);
mImportance.setDisabledByAdmin(mSuspendedAppsAdmin);
@@ -192,18 +193,22 @@
}
});
}
- mSilent.setChecked(importance == Ranking.IMPORTANCE_LOW);
- mSilent.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
- @Override
- public boolean onPreferenceChange(Preference preference, Object newValue) {
- final boolean silenced = (Boolean) newValue;
- final int importance =
- silenced ? Ranking.IMPORTANCE_LOW : Ranking.IMPORTANCE_UNSPECIFIED;
- mBackend.setImportance(mPkgInfo.packageName, mUid, importance);
- updateDependents(importance);
- return true;
- }
- });
+ if (notSilenceable) {
+ setVisible(mSilent, false);
+ } else {
+ mSilent.setChecked(importance == Ranking.IMPORTANCE_LOW);
+ mSilent.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
+ @Override
+ public boolean onPreferenceChange(Preference preference, Object newValue) {
+ final boolean silenced = (Boolean) newValue;
+ final int importance =
+ silenced ? Ranking.IMPORTANCE_LOW : Ranking.IMPORTANCE_UNSPECIFIED;
+ mBackend.setImportance(mPkgInfo.packageName, mUid, importance);
+ updateDependents(importance);
+ return true;
+ }
+ });
+ }
updateDependents(banned ? Ranking.IMPORTANCE_NONE : importance);
}
}