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

Commit 66670232 authored by Julia Reynolds's avatar Julia Reynolds Committed by android-build-merger
Browse files

Non-blockable notification packages. am: 98a44863 am: dbaa1338

am: 7d829ad9

Change-Id: Ie72cd7ddb5e0defac991e150b97c07b0a414e0c8
parents a1ff1912 7d829ad9
Loading
Loading
Loading
Loading
+3 −0
Original line number Original line Diff line number Diff line
@@ -2627,4 +2627,7 @@
         <item>110,119:112</item>
         <item>110,119:112</item>
    -->
    -->
    <string-array translatable="false" name="config_convert_to_emergency_number_map" />
    <string-array translatable="false" name="config_convert_to_emergency_number_map" />

    <!-- An array of packages for which notifications cannot be blocked. -->
    <string-array translatable="false" name="config_nonBlockableNotificationPackages" />
</resources>
</resources>
+2 −0
Original line number Original line Diff line number Diff line
@@ -2715,4 +2715,6 @@
  <java-symbol type="drawable" name="ic_restart" />
  <java-symbol type="drawable" name="ic_restart" />


  <java-symbol type="array" name="config_convert_to_emergency_number_map" />
  <java-symbol type="array" name="config_convert_to_emergency_number_map" />

  <java-symbol type="array" name="config_nonBlockableNotificationPackages" />
</resources>
</resources>
+10 −1
Original line number Original line Diff line number Diff line
@@ -113,8 +113,11 @@ import com.android.systemui.statusbar.stack.NotificationStackScrollLayout;
import com.android.systemui.statusbar.stack.StackStateAnimator;
import com.android.systemui.statusbar.stack.StackStateAnimator;


import java.util.ArrayList;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashSet;
import java.util.List;
import java.util.List;
import java.util.Locale;
import java.util.Locale;
import java.util.Set;


import static android.service.notification.NotificationListenerService.Ranking.IMPORTANCE_HIGH;
import static android.service.notification.NotificationListenerService.Ranking.IMPORTANCE_HIGH;


@@ -268,6 +271,8 @@ public abstract class BaseStatusBar extends SystemUI implements


    protected boolean mVrMode;
    protected boolean mVrMode;


    private Set<String> mNonBlockablePkgs;

    @Override  // NotificationData.Environment
    @Override  // NotificationData.Environment
    public boolean isDeviceProvisioned() {
    public boolean isDeviceProvisioned() {
        return mDeviceProvisioned;
        return mDeviceProvisioned;
@@ -829,6 +834,9 @@ public abstract class BaseStatusBar extends SystemUI implements
            Slog.e(TAG, "Failed to register VR mode state listener: " + e);
            Slog.e(TAG, "Failed to register VR mode state listener: " + e);
        }
        }


        mNonBlockablePkgs = new HashSet<String>();
        Collections.addAll(mNonBlockablePkgs, mContext.getResources().getStringArray(
                com.android.internal.R.array.config_nonBlockableNotificationPackages));
    }
    }


    protected void notifyUserAboutHiddenNotifications() {
    protected void notifyUserAboutHiddenNotifications() {
@@ -1109,7 +1117,8 @@ public abstract class BaseStatusBar extends SystemUI implements
            settingsButton.setVisibility(View.GONE);
            settingsButton.setVisibility(View.GONE);
        }
        }


        guts.bindImportance(pmUser, sbn, mNotificationData.getImportance(sbn.getKey()));
        guts.bindImportance(pmUser, sbn, mNonBlockablePkgs,
                mNotificationData.getImportance(sbn.getKey()));


        final TextView doneButton = (TextView) guts.findViewById(R.id.done);
        final TextView doneButton = (TextView) guts.findViewById(R.id.done);
        doneButton.setText(R.string.notification_done);
        doneButton.setText(R.string.notification_done);
+14 −10
Original line number Original line Diff line number Diff line
@@ -50,6 +50,8 @@ import com.android.systemui.R;
import com.android.systemui.statusbar.stack.StackStateAnimator;
import com.android.systemui.statusbar.stack.StackStateAnimator;
import com.android.systemui.tuner.TunerService;
import com.android.systemui.tuner.TunerService;


import java.util.Set;

/**
/**
 * The guts of a notification revealed when performing a long press.
 * The guts of a notification revealed when performing a long press.
 */
 */
@@ -173,7 +175,7 @@ public class NotificationGuts extends LinearLayout implements TunerService.Tunab
    }
    }


    void bindImportance(final PackageManager pm, final StatusBarNotification sbn,
    void bindImportance(final PackageManager pm, final StatusBarNotification sbn,
            final int importance) {
            final Set<String> nonBlockablePkgs, final int importance) {
        mINotificationManager = INotificationManager.Stub.asInterface(
        mINotificationManager = INotificationManager.Stub.asInterface(
                ServiceManager.getService(Context.NOTIFICATION_SERVICE));
                ServiceManager.getService(Context.NOTIFICATION_SERVICE));
        mStartingUserImportance = NotificationListenerService.Ranking.IMPORTANCE_UNSPECIFIED;
        mStartingUserImportance = NotificationListenerService.Ranking.IMPORTANCE_UNSPECIFIED;
@@ -182,24 +184,26 @@ public class NotificationGuts extends LinearLayout implements TunerService.Tunab
                    mINotificationManager.getImportance(sbn.getPackageName(), sbn.getUid());
                    mINotificationManager.getImportance(sbn.getPackageName(), sbn.getUid());
        } catch (RemoteException e) {}
        } catch (RemoteException e) {}
        mNotificationImportance = importance;
        mNotificationImportance = importance;
        boolean systemApp = false;
        boolean nonBlockable = false;
        try {
        try {
            final PackageInfo info =
            final PackageInfo info =
                    pm.getPackageInfo(sbn.getPackageName(), PackageManager.GET_SIGNATURES);
                    pm.getPackageInfo(sbn.getPackageName(), PackageManager.GET_SIGNATURES);
            systemApp = Utils.isSystemPackage(getResources(), pm, info);
            nonBlockable = Utils.isSystemPackage(getResources(), pm, info);
        } catch (PackageManager.NameNotFoundException e) {
        } catch (PackageManager.NameNotFoundException e) {
            // unlikely.
            // unlikely.
        }
        }
        if (nonBlockablePkgs != null) {
            nonBlockable |= nonBlockablePkgs.contains(sbn.getPackageName());
        }


        final View importanceSlider = findViewById(R.id.importance_slider);
        final View importanceSlider = findViewById(R.id.importance_slider);
        final View importanceButtons = findViewById(R.id.importance_buttons);
        final View importanceButtons = findViewById(R.id.importance_buttons);
        if (mShowSlider) {
        if (mShowSlider) {
            bindSlider(importanceSlider, systemApp);
            bindSlider(importanceSlider, nonBlockable);
            importanceSlider.setVisibility(View.VISIBLE);
            importanceSlider.setVisibility(View.VISIBLE);
            importanceButtons.setVisibility(View.GONE);
            importanceButtons.setVisibility(View.GONE);
        } else {
        } else {

            bindToggles(importanceButtons, mStartingUserImportance, nonBlockable);
            bindToggles(importanceButtons, mStartingUserImportance, systemApp);
            importanceButtons.setVisibility(View.VISIBLE);
            importanceButtons.setVisibility(View.VISIBLE);
            importanceSlider.setVisibility(View.GONE);
            importanceSlider.setVisibility(View.GONE);
        }
        }
@@ -239,7 +243,7 @@ public class NotificationGuts extends LinearLayout implements TunerService.Tunab
    }
    }


    private void bindToggles(final View importanceButtons, final int importance,
    private void bindToggles(final View importanceButtons, final int importance,
            final boolean systemApp) {
            final boolean nonBlockable) {
        ((RadioGroup) importanceButtons).setOnCheckedChangeListener(
        ((RadioGroup) importanceButtons).setOnCheckedChangeListener(
                new RadioGroup.OnCheckedChangeListener() {
                new RadioGroup.OnCheckedChangeListener() {
                    @Override
                    @Override
@@ -250,7 +254,7 @@ public class NotificationGuts extends LinearLayout implements TunerService.Tunab
        mBlock = (RadioButton) importanceButtons.findViewById(R.id.block_importance);
        mBlock = (RadioButton) importanceButtons.findViewById(R.id.block_importance);
        mSilent = (RadioButton) importanceButtons.findViewById(R.id.silent_importance);
        mSilent = (RadioButton) importanceButtons.findViewById(R.id.silent_importance);
        mReset = (RadioButton) importanceButtons.findViewById(R.id.reset_importance);
        mReset = (RadioButton) importanceButtons.findViewById(R.id.reset_importance);
        if (systemApp) {
        if (nonBlockable) {
            mBlock.setVisibility(View.GONE);
            mBlock.setVisibility(View.GONE);
            mReset.setText(mContext.getString(R.string.do_not_silence));
            mReset.setText(mContext.getString(R.string.do_not_silence));
        } else {
        } else {
@@ -265,7 +269,7 @@ public class NotificationGuts extends LinearLayout implements TunerService.Tunab
        }
        }
    }
    }


    private void bindSlider(final View importanceSlider, final boolean systemApp) {
    private void bindSlider(final View importanceSlider, final boolean nonBlockable) {
        mActiveSliderTint = ColorStateList.valueOf(Utils.getColorAccent(mContext));
        mActiveSliderTint = ColorStateList.valueOf(Utils.getColorAccent(mContext));
        mInactiveSliderTint = loadColorStateList(R.color.notification_guts_disabled_slider_color);
        mInactiveSliderTint = loadColorStateList(R.color.notification_guts_disabled_slider_color);


@@ -273,7 +277,7 @@ public class NotificationGuts extends LinearLayout implements TunerService.Tunab
        mImportanceTitle = ((TextView) importanceSlider.findViewById(R.id.title));
        mImportanceTitle = ((TextView) importanceSlider.findViewById(R.id.title));
        mSeekBar = (SeekBar) importanceSlider.findViewById(R.id.seekbar);
        mSeekBar = (SeekBar) importanceSlider.findViewById(R.id.seekbar);


        final int minProgress = systemApp ?
        final int minProgress = nonBlockable ?
                NotificationListenerService.Ranking.IMPORTANCE_MIN
                NotificationListenerService.Ranking.IMPORTANCE_MIN
                : NotificationListenerService.Ranking.IMPORTANCE_NONE;
                : NotificationListenerService.Ranking.IMPORTANCE_NONE;
        mSeekBar.setMax(NotificationListenerService.Ranking.IMPORTANCE_MAX);
        mSeekBar.setMax(NotificationListenerService.Ranking.IMPORTANCE_MAX);