服务停止时如何删除通知?

时间:2019-06-06 10:42:56

标签: java android android-service android-notifications

我正在使用的代码是:

private void removeNotification(){
    NotificationManager notificationManager = (NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE);
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O && notificationManager != null) {
        notificationManager.deleteNotificationChannel(Constants.CHANNEL_ID.CHANNEL_ID);
    }
    if (notificationManager != null) {
        notificationManager.cancel(Constants.NOTIFICATION_ID.SERVICE_ID);
    }
    Log.i(TAG, "Notification removed!");
}

但是我的代码和stopForeground(true);有什么区别? 因为它们都会删除通知。

服务被销毁时应该使用哪个?

编辑

通知代码:

 NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(this, Constants.CHANNEL_ID.CHANNEL_ID);
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
        NotificationChannel notificationChannel =
                new NotificationChannel(
                        Constants.CHANNEL_ID.CHANNEL_ID,
                        "Media PlayBack",
                        NotificationManager.IMPORTANCE_LOW);
        NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
        notificationManager.createNotificationChannel(notificationChannel);
        notificationBuilder.setChannelId(Constants.CHANNEL_ID.CHANNEL_ID);
    }
    notificationBuilder.setShowWhen(false)
            .setStyle(new android.support.v4.media.app.NotificationCompat.MediaStyle().setMediaSession(mMediaSessionCompat.getSessionToken()).setShowActionsInCompactView(0, 1, 2))
            .setSmallIcon(android.R.drawable.stat_sys_headset).setContentTitle(activeSong.getTitle()).setContentText(activeSong.getArtist())
            .addAction(R.drawable.ic_action_prev_white, null, playbackAction(3))
            .addAction(notificationAction, null, play_pause_action).addAction(R.drawable.ic_action_next_white, null, playbackAction(2))
            .addAction(R.drawable.ic_close, null, playbackAction(4))
            .setColor(getResources().getColor(R.color.theme1));

    notificationBuilder.setOngoing(true);

    Notification notification = notificationBuilder.build();
    startForeground(Constants.NOTIFICATION_ID.SERVICE_ID, notification);

1 个答案:

答案 0 :(得分:3)

  

我现在正在使用的代码是这个

请勿删除频道。

  

但是我的代码和stopForeground(true)有什么区别? ?

SyntaxError: unexpected EOF while parsing仅在使用stopForeground(true)时有效。

  

服务被销毁时应该使用哪个?

如果您使用startForeground(),请使用startForeground()。如果您直接使用stopForeground()引发Notification,请使用NotificationManager cancel() Notification