diff --git a/core/java/com/android/internal/notification/SystemNotificationChannels.java b/core/java/com/android/internal/notification/SystemNotificationChannels.java index 797cf2b6de56b..d279746294b30 100644 --- a/core/java/com/android/internal/notification/SystemNotificationChannels.java +++ b/core/java/com/android/internal/notification/SystemNotificationChannels.java @@ -47,6 +47,7 @@ public class SystemNotificationChannels { public static String RETAIL_MODE = "RETAIL_MODE"; public static String USB = "USB"; public static String FOREGROUND_SERVICE = "FOREGROUND_SERVICE"; + public static String ALERT_WINDOW = "ALERT_WINDOW"; public static void createAll(Context context) { final NotificationManager nm = context.getSystemService(NotificationManager.class); @@ -137,6 +138,11 @@ public class SystemNotificationChannels { context.getString(R.string.notification_channel_foreground_service), NotificationManager.IMPORTANCE_MIN)); + channelsList.add(new NotificationChannel( + ALERT_WINDOW, + context.getString(R.string.alert_windows_notification_channel_name), + NotificationManager.IMPORTANCE_MIN)); + nm.createNotificationChannels(channelsList); } diff --git a/core/res/res/values/strings.xml b/core/res/res/values/strings.xml index f747d3dfcba3e..fcabe3199f696 100644 --- a/core/res/res/values/strings.xml +++ b/core/res/res/values/strings.xml @@ -3225,7 +3225,7 @@ - %s displaying over other apps + App activity %s is displaying over other apps diff --git a/services/core/java/com/android/server/wm/AlertWindowNotification.java b/services/core/java/com/android/server/wm/AlertWindowNotification.java index 7ed3eac10d111..50b1520f32a44 100644 --- a/services/core/java/com/android/server/wm/AlertWindowNotification.java +++ b/services/core/java/com/android/server/wm/AlertWindowNotification.java @@ -16,15 +16,14 @@ package com.android.server.wm; -import static android.app.NotificationManager.IMPORTANCE_MIN; import static android.app.PendingIntent.FLAG_CANCEL_CURRENT; import static android.content.Context.NOTIFICATION_SERVICE; import static android.content.Intent.FLAG_ACTIVITY_CLEAR_TASK; import static android.content.Intent.FLAG_ACTIVITY_NEW_TASK; import static android.provider.Settings.ACTION_MANAGE_OVERLAY_PERMISSION; +import static com.android.internal.notification.SystemNotificationChannels.ALERT_WINDOW; import android.app.Notification; -import android.app.NotificationChannel; import android.app.NotificationManager; import android.app.PendingIntent; import android.content.Context; @@ -41,7 +40,7 @@ import com.android.server.policy.IconUtilities; /** Displays an ongoing notification for a process displaying an alert window */ class AlertWindowNotification { - private static final String CHANNEL_PREFIX = "com.android.server.wm.AlertWindowNotification - "; + private static final String TAG_PREFIX = "com.android.server.wm.AlertWindowNotification: "; private static final int NOTIFICATION_ID = 0; private static int sNextRequestCode = 0; @@ -58,7 +57,7 @@ class AlertWindowNotification { mPackageName = packageName; mNotificationManager = (NotificationManager) mService.mContext.getSystemService(NOTIFICATION_SERVICE); - mNotificationTag = CHANNEL_PREFIX + mPackageName; + mNotificationTag = TAG_PREFIX + mPackageName; mRequestCode = sNextRequestCode++; mIconUtilities = new IconUtilities(mService.mContext); } @@ -100,11 +99,9 @@ class AlertWindowNotification { final String appName = (aInfo != null) ? pm.getApplicationLabel(aInfo).toString() : mPackageName; - createNotificationChannelIfNeeded(context, appName); - final String message = context.getString(R.string.alert_windows_notification_message, appName); - final Notification.Builder builder = new Notification.Builder(context, mNotificationTag) + final Notification.Builder builder = new Notification.Builder(context, ALERT_WINDOW) .setOngoing(true) .setContentTitle( context.getString(R.string.alert_windows_notification_title, appName)) @@ -134,20 +131,6 @@ class AlertWindowNotification { return PendingIntent.getActivity(context, mRequestCode, intent, FLAG_CANCEL_CURRENT); } - private void createNotificationChannelIfNeeded(Context context, String appName) { - if (mNotificationManager.getNotificationChannel(mNotificationTag) != null) { - return; - } - final String nameChannel = - context.getString(R.string.alert_windows_notification_channel_name, appName); - final NotificationChannel channel = - new NotificationChannel(mNotificationTag, nameChannel, IMPORTANCE_MIN); - channel.enableLights(false); - channel.enableVibration(false); - mNotificationManager.createNotificationChannel(channel); - } - - private ApplicationInfo getApplicationInfo(PackageManager pm, String packageName) { try { return pm.getApplicationInfo(packageName, 0);