Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit da493138 authored by Andrei Stingaceanu's avatar Andrei Stingaceanu
Browse files

Restrict notification preferences for suspended apps

Bug: 26856390
Bug: 22776761
Change-Id: I7f03b8b95af93db66f12c5ac1cbf490b4ae0e73c
parent eb3b52d4
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -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" />
+1 −1
Original line number Diff line number Diff line
@@ -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" />
+3 −5
Original line number Diff line number Diff line
@@ -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) {
+23 −11
Original line number Diff line number Diff line
@@ -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
+2 −1
Original line number Diff line number Diff line
@@ -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);