Merge "Foreground service notis must be correctly formed." into oc-mr1-dev

This commit is contained in:
TreeHugger Robot
2017-10-03 20:23:32 +00:00
committed by Android (Google) Code Review
3 changed files with 12 additions and 1 deletions

View File

@@ -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);
}

View File

@@ -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);

View File

@@ -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) {