Restrict notification preferences for suspended apps
Bug: 26856390 Bug: 22776761 Change-Id: I7f03b8b95af93db66f12c5ac1cbf490b4ae0e73c
This commit is contained in:
@@ -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" />
|
||||
|
@@ -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" />
|
||||
|
@@ -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) {
|
||||
|
@@ -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
|
||||
|
@@ -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);
|
||||
|
||||
|
Reference in New Issue
Block a user