From bba26b18ec1ba45f6c312cdae05f7ec0dfef1663 Mon Sep 17 00:00:00 2001 From: Julia Reynolds Date: Thu, 11 Oct 2018 09:21:11 -0400 Subject: [PATCH] Post channel error toasts as android Since we're using system_server's context, our calling identity needs to match Test: test app that posts a notification to a non-existant channel Fixes: 117519040 Change-Id: I599d2a2c3f086bceef9f4b5c50f4cc7c55bdb207 --- .../NotificationManagerService.java | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/services/core/java/com/android/server/notification/NotificationManagerService.java b/services/core/java/com/android/server/notification/NotificationManagerService.java index f9d49d7ce0d15..506cc441c8685 100644 --- a/services/core/java/com/android/server/notification/NotificationManagerService.java +++ b/services/core/java/com/android/server/notification/NotificationManagerService.java @@ -4282,14 +4282,16 @@ public class NotificationManagerService extends SystemService { } private void doChannelWarningToast(CharSequence toastText) { - final int defaultWarningEnabled = Build.IS_DEBUGGABLE ? 1 : 0; - final boolean warningEnabled = Settings.Global.getInt(getContext().getContentResolver(), - Settings.Global.SHOW_NOTIFICATION_CHANNEL_WARNINGS, defaultWarningEnabled) != 0; - if (warningEnabled) { - Toast toast = Toast.makeText(getContext(), mHandler.getLooper(), toastText, - Toast.LENGTH_SHORT); - toast.show(); - } + Binder.withCleanCallingIdentity(() -> { + final int defaultWarningEnabled = Build.IS_DEBUGGABLE ? 1 : 0; + final boolean warningEnabled = Settings.Global.getInt(getContext().getContentResolver(), + Settings.Global.SHOW_NOTIFICATION_CHANNEL_WARNINGS, defaultWarningEnabled) != 0; + if (warningEnabled) { + Toast toast = Toast.makeText(getContext(), mHandler.getLooper(), toastText, + Toast.LENGTH_SHORT); + toast.show(); + } + }); } @VisibleForTesting