java - android中的NotificationCompat.MediaStyle()中只有上一个按钮起作用

标签 java android layout notifications

android 中的NotificationCompat.MediaStyle() 中只有上一个按钮有效。 为什么我的下一个和暂停按钮在 Android 通知中起作用。

private void setMediaPlaybackState(int state) {
    PlaybackStateCompat.Builder playbackstateBuilder = new PlaybackStateCompat.Builder();
    if( state == PlaybackStateCompat.STATE_PLAYING ) {
        playbackstateBuilder.setActions(PlaybackStateCompat.ACTION_PLAY_PAUSE | PlaybackStateCompat.ACTION_PAUSE);
    } else {
        playbackstateBuilder.setActions(PlaybackStateCompat.ACTION_PLAY_PAUSE | PlaybackStateCompat.ACTION_PLAY);
    }
    playbackstateBuilder.setActions(PlaybackStateCompat.ACTION_SKIP_TO_NEXT);
    playbackstateBuilder.setActions(PlaybackStateCompat.ACTION_SKIP_TO_PREVIOUS);
    playbackstateBuilder.setState(state, PlaybackStateCompat.PLAYBACK_POSITION_UNKNOWN, 1);
    mMediaSessionCompat.setPlaybackState(playbackstateBuilder.build());
}

private void showPlayingNotification() {
    NotificationCompat.Builder builder = MediaStyleHelper.from(BackgroundAudioService.this, mMediaSessionCompat);
    if( builder == null ) {
        return;
    }
    builder.addAction(new NotificationCompat.Action(R.drawable.ic_skip_previous_black_48dp, "Play", MediaButtonReceiver.buildMediaButtonPendingIntent(this, PlaybackStateCompat.ACTION_SKIP_TO_PREVIOUS)));
    builder.addAction(new NotificationCompat.Action(R.drawable.ic_pause, "Pause", MediaButtonReceiver.buildMediaButtonPendingIntent(this, PlaybackStateCompat.ACTION_PLAY_PAUSE)));
    builder.addAction(new NotificationCompat.Action(R.drawable.ic_skip_next_black_48dp, "Play", MediaButtonReceiver.buildMediaButtonPendingIntent(this, PlaybackStateCompat.ACTION_SKIP_TO_NEXT)));
    builder.setStyle(new NotificationCompat.MediaStyle().setShowActionsInCompactView(0,1,2).setShowCancelButton(true).setMediaSession(mMediaSessionCompat.getSessionToken()));
    builder.setSmallIcon(R.drawable.music_logo);
    NotificationManagerCompat.from(BackgroundAudioService.this).notify(1, builder.build());
}

最佳答案

我意识到这篇文章有点旧了,但我将回答我认为你的问题所问的问题。您是说只有前一个按钮有效,但“跳过”按钮无效。我对此的回应是为您执行以下playbackStateBuilder:

playbackStateBuilder.setActions(PlaybackStateCompat.ACTION_SKIP_TO_NEXT 
        | PlaybackStateCompat.ACTION_SKIP_TO_PREVIOUS);

无论出于何种原因,您像这样一个接一个地声明操作的方式是行不通的。我不知道为什么。我为此苦苦挣扎了整整两周,除了你之外,我的 friend 没有人提出过有关此问题的问题。我希望任何经历过这种情况的人都会被我的回答所拯救,我希望它也能帮助你,我的 friend ! (:

关于java - android中的NotificationCompat.MediaStyle()中只有上一个按钮起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44785700/

相关文章:

java - 黑屏和清理代码(LibGDX)

java - 指定使用 T 的类

java - Android 如何检测 Instagram 等应用程序中 View 元素的边框/边缘

html - 如何在没有绝对定位的情况下适应 100% 宽度的元素?

java - Android Java接口(interface)回调onPostExecute空指针异常

java - 如何使用返回所有文档的 spring-data-solr 构建 FacetQuery (* :*) from solr index

java - 如何在 TinkerPop 中比较顶点集是否相等?

Fragment 中的 Android TabHost

android - 如何解决 "RelativeLayout cannot be cast to a DrawerLayout"错误?

html - 调整窗口大小时 float 框