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

Commit f3de8aa2 authored by Julia Reynolds's avatar Julia Reynolds
Browse files

Foreground service notis must be correctly formed.

If an app targets api 26, it needs a notification channel, even for
foreground service notifications.

Change-Id: Id3131d4bb2748e9d23f66dd4f5570842bc50a44f
Fixes: 66905243
Test: manual
parent 6e326268
Loading
Loading
Loading
Loading
+4 −1
Original line number Diff line number Diff line
@@ -517,11 +517,14 @@ final class ServiceRecord extends Binder {
                            } catch (PackageManager.NameNotFoundException e) {
                            }
                        }
                        if (localForegroundNoti.getSmallIcon() == null) {
                        if (localForegroundNoti.getSmallIcon() == null
                                || nm.getNotificationChannel(localPackageName, appUid,
                                localForegroundNoti.getChannelId()) == null) {
                            // Notifications whose icon is 0 are defined to not show
                            // a notification, silently ignoring it.  We don't want to
                            // just ignore it, we want to prevent the service from
                            // being foreground.
                            // Also every notification needs a channel.
                            throw new RuntimeException("invalid service notification: "
                                    + foregroundNoti);
                        }
+2 −0
Original line number Diff line number Diff line
@@ -17,8 +17,10 @@
package com.android.server.notification;

import android.app.Notification;
import android.app.NotificationChannel;

public interface NotificationManagerInternal {
    NotificationChannel getNotificationChannel(String pkg, int uid, String channelId);
    void enqueueNotification(String pkg, String basePkg, int callingUid, int callingPid,
            String tag, int id, Notification notification, int userId);

+6 −0
Original line number Diff line number Diff line
@@ -3372,6 +3372,12 @@ public class NotificationManagerService extends SystemService {
     * The private API only accessible to the system process.
     */
    private final NotificationManagerInternal mInternalService = new NotificationManagerInternal() {
        @Override
        public NotificationChannel getNotificationChannel(String pkg, int uid, String
                channelId) {
            return mRankingHelper.getNotificationChannel(pkg, uid, channelId, false);
        }

        @Override
        public void enqueueNotification(String pkg, String opPkg, int callingUid, int callingPid,
                String tag, int id, Notification notification, int userId) {