setOngoing(false)后无法清除通知

时间:2018-09-12 05:11:43

标签: android service notifications audio-player android-music-player

我有一个音乐播放器,可在播放音频时显示媒体通知。我希望用户能够在音乐暂停时取消通知。

我必须使用startForeground,以便该服务将继续运行并保持与活动的连接。我尝试过使用通知通道,一旦我杀死了活动,回放也会停止,这不是我想要的(代码仍在其中,已注释掉)。

显示通知时,我叫startForeground。 setOngoing设置为playingState == STATE_PLAYING。当服务被销毁或playbackState == null ||时,我叫stopForeground。已停止。

垃圾箱:https://pastebin.com/FNTSSzjS

代码段(因为您需要在pastebin中包含代码)

private void addPlayPauseAction(NotificationCompat.Builder builder) {
    String label;
    int icon;
    PendingIntent intent;
    if (playbackState.getState() == PlaybackStateCompat.STATE_PLAYING) {
        label = service.getString(R.string.play_pause);
        icon = android.R.drawable.ic_media_pause;
        intent = intentPause;
        builder.setOngoing(true);
    } else {
        label = service.getString(R.string.play_pause);
        icon = android.R.drawable.ic_media_play;
        intent = intentPlay;
        builder.setOngoing(false);
    }
    builder.addAction(new NotificationCompat.Action(icon, label, intent));
}
PasteBin中的

相关方法是 startNotification,stopNotification,createNotification,addPlayPauseAction和setNotificationPlaybackState

1 个答案:

答案 0 :(得分:0)

使用stopForeground(false)并重建通知。使用前台服务时不必使用setOngoing。有关更多信息,请参阅此page

并搜索Running a service in the foreground