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

Commit 08d381b8 authored by Julia Reynolds's avatar Julia Reynolds
Browse files

Add shell command to toggle DND

adb shell cmd notification set_dnd [type]

Where type is one of:
none (total silence mode)
on (total silence mode)
priority (priority only mode)
alarms (alarms only mode)
all (turn dnd off)
off (turn dnd off)

Test: manual
Fixes: 132901740
Change-Id: I9b634570a0bd6dd0a3277268e39a8ca67e177e89
parent 99338728
Loading
Loading
Loading
Loading
+30 −2
Original line number Original line Diff line number Diff line
@@ -16,6 +16,12 @@


package com.android.server.notification;
package com.android.server.notification;


import static android.app.NotificationManager.INTERRUPTION_FILTER_ALARMS;
import static android.app.NotificationManager.INTERRUPTION_FILTER_ALL;
import static android.app.NotificationManager.INTERRUPTION_FILTER_NONE;
import static android.app.NotificationManager.INTERRUPTION_FILTER_PRIORITY;
import static android.app.NotificationManager.INTERRUPTION_FILTER_UNKNOWN;

import android.app.ActivityManager;
import android.app.ActivityManager;
import android.app.INotificationManager;
import android.app.INotificationManager;
import android.app.Notification;
import android.app.Notification;
@@ -47,13 +53,13 @@ import java.util.Collections;
 * Implementation of `cmd notification` in NotificationManagerService.
 * Implementation of `cmd notification` in NotificationManagerService.
 */
 */
public class NotificationShellCmd extends ShellCommand {
public class NotificationShellCmd extends ShellCommand {
    private static final String USAGE =
    private static final String USAGE = "usage: cmd notification SUBCMD [args]\n\n"
              "usage: cmd notification SUBCMD [args]\n\n"
            + "SUBCMDs:\n"
            + "SUBCMDs:\n"
            + "  allow_listener COMPONENT [user_id (current user if not specified)]\n"
            + "  allow_listener COMPONENT [user_id (current user if not specified)]\n"
            + "  disallow_listener COMPONENT [user_id (current user if not specified)]\n"
            + "  disallow_listener COMPONENT [user_id (current user if not specified)]\n"
            + "  allow_assistant COMPONENT [user_id (current user if not specified)]\n"
            + "  allow_assistant COMPONENT [user_id (current user if not specified)]\n"
            + "  remove_assistant COMPONENT [user_id (current user if not specified)]\n"
            + "  remove_assistant COMPONENT [user_id (current user if not specified)]\n"
            + "  set_dnd [on|none (same as on)|priority|alarms|all|off (same as all)]"
            + "  allow_dnd PACKAGE [user_id (current user if not specified)]\n"
            + "  allow_dnd PACKAGE [user_id (current user if not specified)]\n"
            + "  disallow_dnd PACKAGE [user_id (current user if not specified)]\n"
            + "  disallow_dnd PACKAGE [user_id (current user if not specified)]\n"
            + "  suspend_package PACKAGE\n"
            + "  suspend_package PACKAGE\n"
@@ -111,6 +117,28 @@ public class NotificationShellCmd extends ShellCommand {
        final PrintWriter pw = getOutPrintWriter();
        final PrintWriter pw = getOutPrintWriter();
        try {
        try {
            switch (cmd.replace('-', '_')) {
            switch (cmd.replace('-', '_')) {
                case "set_dnd": {
                    String mode = getNextArgRequired();
                    int interruptionFilter = INTERRUPTION_FILTER_UNKNOWN;
                    switch(mode) {
                        case "none":
                        case "on":
                            interruptionFilter = INTERRUPTION_FILTER_NONE;
                            break;
                        case "priority":
                            interruptionFilter = INTERRUPTION_FILTER_PRIORITY;
                            break;
                        case "alarms":
                            interruptionFilter = INTERRUPTION_FILTER_ALARMS;
                            break;
                        case "all":
                        case "off":
                            interruptionFilter = INTERRUPTION_FILTER_ALL;
                    }
                    mBinderService.setInterruptionFilter(
                            mDirectService.getContext().getPackageName(), interruptionFilter);
                }
                break;
                case "allow_dnd": {
                case "allow_dnd": {
                    String packageName = getNextArgRequired();
                    String packageName = getNextArgRequired();
                    int userId = ActivityManager.getCurrentUser();
                    int userId = ActivityManager.getCurrentUser();