11

简短的问题:

我正在尝试使用 NotificationCompat.Builder 类来创建将用于服务的通知,但由于某种原因,我要么看不到通知,要么在服务应该取消时无法取消它被摧毁(或停止在前台)。

我的代码:

@Override
public int onStartCommand(final Intent intent, final int flags, final int startId) {
    final String action = intent == null ? null : intent.getAction();
    Log.d("APP", "service action:" + action);
    if (ACTION_ENABLE_STICKING.equals(action)) {
        final NotificationCompat.Builder builder = new Builder(this);
        builder.setSmallIcon(R.drawable.ic_launcher);
        builder.setContentTitle("content title");
        builder.setTicker("ticker");
        builder.setContentText("content text");
        final Intent notificationIntent = new Intent(this, FakeActivity.class);
        final PendingIntent pi = PendingIntent.getActivity(this, 0, notificationIntent, 0);
        builder.setContentIntent(pi);
        final Notification notification = builder.build();
        // notification.flags |= Notification.FLAG_FOREGROUND_SERVICE;
        // notification.flags |= Notification.FLAG_NO_CLEAR;
        // notification.flags |= Notification.FLAG_ONGOING_EVENT;

        startForeground(NOTIFICATION_ID, notification);
        // mNotificationManager.notify(NOTIFICATION_ID, notification);

    } else if (ACTION_DISABLE_STICKING.equals(action)) {
        stopForeground(true);
        stopSelf();
        // mNotificationManager.cancel(NOTIFICATION_ID);
    }
    return super.onStartCommand(intent, flags, startId);
}

评论的命令是我尝试使其工作。由于某种原因,没有一个工作。

我什至添加了一个虚假活动,因为它需要一个 contentIntent ,但它仍然不起作用。

有人可以帮忙吗?

4

1 回答 1

9

前段时间我遇到了完全相同的问题,我发现由于某种原因,通知 ID 0 不能正常工作startForeground(),它是NOTIFICATION_ID您代码中的值吗?


编辑:文档现已更新,说明 0 是无效 ID

于 2013-04-28T17:08:25.687 回答