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 -->
|
<!-- Apps without topics -->
|
||||||
<!-- Importance -->
|
<!-- Importance -->
|
||||||
<Preference
|
<com.android.settingslib.RestrictedPreference
|
||||||
android:key="importance_title"
|
android:key="importance_title"
|
||||||
android:title="@string/notification_importance_title"
|
android:title="@string/notification_importance_title"
|
||||||
android:order="2" />
|
android:order="2" />
|
||||||
|
@@ -19,7 +19,7 @@
|
|||||||
android:key="topic_notification_settings">
|
android:key="topic_notification_settings">
|
||||||
|
|
||||||
<!-- Importance -->
|
<!-- Importance -->
|
||||||
<Preference
|
<com.android.settingslib.RestrictedPreference
|
||||||
android:key="importance_title"
|
android:key="importance_title"
|
||||||
android:title="@string/notification_importance_title"
|
android:title="@string/notification_importance_title"
|
||||||
android:order="1" />
|
android:order="1" />
|
||||||
|
@@ -83,7 +83,7 @@ public class AppNotificationSettings extends NotificationSettingsBase {
|
|||||||
mBlock = (RestrictedSwitchPreference) findPreference(KEY_BLOCK);
|
mBlock = (RestrictedSwitchPreference) findPreference(KEY_BLOCK);
|
||||||
mImportance = (ImportanceSeekBarPreference) findPreference(KEY_IMPORTANCE);
|
mImportance = (ImportanceSeekBarPreference) findPreference(KEY_IMPORTANCE);
|
||||||
mImportanceReset = (LayoutPreference) findPreference(KEY_IMPORTANCE_RESET);
|
mImportanceReset = (LayoutPreference) findPreference(KEY_IMPORTANCE_RESET);
|
||||||
mImportanceTitle = findPreference(KEY_IMPORTANCE_TITLE);
|
mImportanceTitle = (RestrictedPreference) findPreference(KEY_IMPORTANCE_TITLE);
|
||||||
mPriority =
|
mPriority =
|
||||||
(RestrictedSwitchPreference) getPreferenceScreen().findPreference(KEY_BYPASS_DND);
|
(RestrictedSwitchPreference) getPreferenceScreen().findPreference(KEY_BYPASS_DND);
|
||||||
mSensitive =
|
mSensitive =
|
||||||
@@ -108,8 +108,7 @@ public class AppNotificationSettings extends NotificationSettingsBase {
|
|||||||
setupBlockSwitch();
|
setupBlockSwitch();
|
||||||
for (Notification.Topic topic : topics) {
|
for (Notification.Topic topic : topics) {
|
||||||
RestrictedPreference topicPreference = new RestrictedPreference(getPrefContext());
|
RestrictedPreference topicPreference = new RestrictedPreference(getPrefContext());
|
||||||
topicPreference.setDisabledByAdmin(
|
topicPreference.setDisabledByAdmin(mSuspendedAppsAdmin);
|
||||||
RestrictedLockUtils.checkIfApplicationIsSuspended(mContext, mPkg, mUserId));
|
|
||||||
topicPreference.setKey(topic.getId());
|
topicPreference.setKey(topic.getId());
|
||||||
topicPreference.setTitle(topic.getLabel());
|
topicPreference.setTitle(topic.getLabel());
|
||||||
// Create intent for this preference.
|
// Create intent for this preference.
|
||||||
@@ -153,8 +152,7 @@ public class AppNotificationSettings extends NotificationSettingsBase {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void setupBlockSwitch() {
|
private void setupBlockSwitch() {
|
||||||
mBlock.setDisabledByAdmin(
|
mBlock.setDisabledByAdmin(mSuspendedAppsAdmin);
|
||||||
RestrictedLockUtils.checkIfApplicationIsSuspended(mContext, mPkg, mUserId));
|
|
||||||
mBlock.setOnPreferenceChangeListener(new OnPreferenceChangeListener() {
|
mBlock.setOnPreferenceChangeListener(new OnPreferenceChangeListener() {
|
||||||
@Override
|
@Override
|
||||||
public boolean onPreferenceChange(Preference preference, Object newValue) {
|
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.SettingsPreferenceFragment;
|
||||||
import com.android.settings.applications.AppInfoBase;
|
import com.android.settings.applications.AppInfoBase;
|
||||||
import com.android.settingslib.RestrictedLockUtils;
|
import com.android.settingslib.RestrictedLockUtils;
|
||||||
|
import com.android.settingslib.RestrictedPreference;
|
||||||
import com.android.settingslib.RestrictedSwitchPreference;
|
import com.android.settingslib.RestrictedSwitchPreference;
|
||||||
import com.android.settings.applications.LayoutPreference;
|
import com.android.settings.applications.LayoutPreference;
|
||||||
|
|
||||||
@@ -65,10 +66,11 @@ abstract public class NotificationSettingsBase extends SettingsPreferenceFragmen
|
|||||||
protected PackageInfo mPkgInfo;
|
protected PackageInfo mPkgInfo;
|
||||||
protected Notification.Topic mTopic;
|
protected Notification.Topic mTopic;
|
||||||
protected ImportanceSeekBarPreference mImportance;
|
protected ImportanceSeekBarPreference mImportance;
|
||||||
protected Preference mImportanceTitle;
|
protected RestrictedPreference mImportanceTitle;
|
||||||
protected LayoutPreference mImportanceReset;
|
protected LayoutPreference mImportanceReset;
|
||||||
protected RestrictedSwitchPreference mPriority;
|
protected RestrictedSwitchPreference mPriority;
|
||||||
protected RestrictedSwitchPreference mSensitive;
|
protected RestrictedSwitchPreference mSensitive;
|
||||||
|
protected EnforcedAdmin mSuspendedAppsAdmin;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onActivityCreated(Bundle savedInstanceState) {
|
public void onActivityCreated(Bundle savedInstanceState) {
|
||||||
@@ -126,6 +128,9 @@ abstract public class NotificationSettingsBase extends SettingsPreferenceFragmen
|
|||||||
// Will be null for app wide settings.
|
// Will be null for app wide settings.
|
||||||
mTopic = args != null && args.containsKey(ARG_TOPIC)
|
mTopic = args != null && args.containsKey(ARG_TOPIC)
|
||||||
? (Notification.Topic) args.getParcelable(ARG_TOPIC) : null;
|
? (Notification.Topic) args.getParcelable(ARG_TOPIC) : null;
|
||||||
|
|
||||||
|
mSuspendedAppsAdmin = RestrictedLockUtils.checkIfApplicationIsSuspended(
|
||||||
|
mContext, mPkg, mUserId);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -136,22 +141,25 @@ abstract public class NotificationSettingsBase extends SettingsPreferenceFragmen
|
|||||||
finish();
|
finish();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
EnforcedAdmin admin = RestrictedLockUtils.checkIfApplicationIsSuspended(
|
mSuspendedAppsAdmin = RestrictedLockUtils.checkIfApplicationIsSuspended(
|
||||||
mContext, mPkg, mUserId);
|
mContext, mPkg, mUserId);
|
||||||
if (mImportance != null) {
|
if (mImportance != null) {
|
||||||
mImportance.setDisabledByAdmin(admin);
|
mImportance.setDisabledByAdmin(mSuspendedAppsAdmin);
|
||||||
}
|
}
|
||||||
if (mPriority != null) {
|
if (mPriority != null) {
|
||||||
mPriority.setDisabledByAdmin(admin);
|
mPriority.setDisabledByAdmin(mSuspendedAppsAdmin);
|
||||||
}
|
}
|
||||||
if (mSensitive != null) {
|
if (mSensitive != null) {
|
||||||
mSensitive.setDisabledByAdmin(admin);
|
mSensitive.setDisabledByAdmin(mSuspendedAppsAdmin);
|
||||||
|
}
|
||||||
|
if (mImportanceTitle != null) {
|
||||||
|
mImportanceTitle.setDisabledByAdmin(mSuspendedAppsAdmin);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void setupImportancePrefs(boolean isSystemApp, int importance) {
|
protected void setupImportancePrefs(boolean isSystemApp, int importance) {
|
||||||
mImportance.setDisabledByAdmin(
|
mImportance.setDisabledByAdmin(mSuspendedAppsAdmin);
|
||||||
RestrictedLockUtils.checkIfApplicationIsSuspended(mContext, mPkg, mUserId));
|
mImportanceTitle.setDisabledByAdmin(mSuspendedAppsAdmin);
|
||||||
if (importance == Ranking.IMPORTANCE_UNSPECIFIED) {
|
if (importance == Ranking.IMPORTANCE_UNSPECIFIED) {
|
||||||
mImportance.setVisible(false);
|
mImportance.setVisible(false);
|
||||||
mImportanceReset.setVisible(false);
|
mImportanceReset.setVisible(false);
|
||||||
@@ -180,6 +188,12 @@ abstract public class NotificationSettingsBase extends SettingsPreferenceFragmen
|
|||||||
button.setOnClickListener(new View.OnClickListener() {
|
button.setOnClickListener(new View.OnClickListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onClick(View v) {
|
public void onClick(View v) {
|
||||||
|
if (mSuspendedAppsAdmin != null) {
|
||||||
|
RestrictedLockUtils.sendShowAdminSupportDetailsIntent(
|
||||||
|
getActivity(), mSuspendedAppsAdmin);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
mBackend.setImportance(mPkg, mUid, mTopic, Ranking.IMPORTANCE_UNSPECIFIED);
|
mBackend.setImportance(mPkg, mUid, mTopic, Ranking.IMPORTANCE_UNSPECIFIED);
|
||||||
mImportanceReset.setVisible(false);
|
mImportanceReset.setVisible(false);
|
||||||
mImportance.setVisible(false);
|
mImportance.setVisible(false);
|
||||||
@@ -211,8 +225,7 @@ abstract public class NotificationSettingsBase extends SettingsPreferenceFragmen
|
|||||||
}
|
}
|
||||||
|
|
||||||
protected void setupPriorityPref(boolean priority) {
|
protected void setupPriorityPref(boolean priority) {
|
||||||
mPriority.setDisabledByAdmin(
|
mPriority.setDisabledByAdmin(mSuspendedAppsAdmin);
|
||||||
RestrictedLockUtils.checkIfApplicationIsSuspended(mContext, mPkg, mUserId));
|
|
||||||
mPriority.setChecked(priority);
|
mPriority.setChecked(priority);
|
||||||
mPriority.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
|
mPriority.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
|
||||||
@Override
|
@Override
|
||||||
@@ -224,8 +237,7 @@ abstract public class NotificationSettingsBase extends SettingsPreferenceFragmen
|
|||||||
}
|
}
|
||||||
|
|
||||||
protected void setupSensitivePref(boolean sensitive) {
|
protected void setupSensitivePref(boolean sensitive) {
|
||||||
mSensitive.setDisabledByAdmin(
|
mSensitive.setDisabledByAdmin(mSuspendedAppsAdmin);
|
||||||
RestrictedLockUtils.checkIfApplicationIsSuspended(mContext, mPkg, mUserId));
|
|
||||||
mSensitive.setChecked(sensitive);
|
mSensitive.setChecked(sensitive);
|
||||||
mSensitive.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
|
mSensitive.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
|
||||||
@Override
|
@Override
|
||||||
|
@@ -22,6 +22,7 @@ import com.android.settings.AppHeader;
|
|||||||
import com.android.settings.R;
|
import com.android.settings.R;
|
||||||
import com.android.settings.applications.LayoutPreference;
|
import com.android.settings.applications.LayoutPreference;
|
||||||
import com.android.settings.notification.NotificationBackend.TopicRow;
|
import com.android.settings.notification.NotificationBackend.TopicRow;
|
||||||
|
import com.android.settingslib.RestrictedPreference;
|
||||||
import com.android.settingslib.RestrictedSwitchPreference;
|
import com.android.settingslib.RestrictedSwitchPreference;
|
||||||
|
|
||||||
import android.app.NotificationManager;
|
import android.app.NotificationManager;
|
||||||
@@ -67,7 +68,7 @@ public class TopicNotificationSettings extends NotificationSettingsBase {
|
|||||||
|
|
||||||
mImportance = (ImportanceSeekBarPreference) findPreference(KEY_IMPORTANCE);
|
mImportance = (ImportanceSeekBarPreference) findPreference(KEY_IMPORTANCE);
|
||||||
mImportanceReset = (LayoutPreference) findPreference(KEY_IMPORTANCE_RESET);
|
mImportanceReset = (LayoutPreference) findPreference(KEY_IMPORTANCE_RESET);
|
||||||
mImportanceTitle = findPreference(KEY_IMPORTANCE_TITLE);
|
mImportanceTitle = (RestrictedPreference) findPreference(KEY_IMPORTANCE_TITLE);
|
||||||
mPriority = (RestrictedSwitchPreference) findPreference(KEY_BYPASS_DND);
|
mPriority = (RestrictedSwitchPreference) findPreference(KEY_BYPASS_DND);
|
||||||
mSensitive = (RestrictedSwitchPreference) findPreference(KEY_SENSITIVE);
|
mSensitive = (RestrictedSwitchPreference) findPreference(KEY_SENSITIVE);
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user