通过通知中的按钮播放上一首/下一首歌曲

我有一个播放器,当用户选择一首歌曲时,播放器会通过 3 个按钮发出通知:上一个、播放、下一个。在后台模式下选择歌曲需要此按钮。但是当我点击这个按钮时,什么都没有发生。这是通知的代码:


Intent intentPrev = new Intent(this, NotificationReceiver.class);

        intentPrev.setAction(ACTION_PREV);

        LocalBroadcastManager.getInstance(this).sendBroadcast(intentPrev);

        PendingIntent pendingIntentPrev = PendingIntent.getActivity(this, 0, intentPrev, PendingIntent.FLAG_UPDATE_CURRENT);


        Intent intentPlay = new Intent(this, NotificationReceiver.class);

        intentPlay.setAction(ACTION_PLAY);

        LocalBroadcastManager.getInstance(this).sendBroadcast(intentPlay);

        PendingIntent pendingIntentPlay = PendingIntent.getActivity(this, 0, intentPlay, PendingIntent.FLAG_UPDATE_CURRENT);


        Intent intentNext = new Intent(this, NotificationReceiver.class);

        intentNext.setAction(ACTION_NEXT);

        LocalBroadcastManager.getInstance(this).sendBroadcast(intentNext);

        PendingIntent pendingIntentNext = PendingIntent.getActivity(this, 0, intentNext, PendingIntent.FLAG_UPDATE_CURRENT);


        NotificationCompat.Builder builder = new NotificationCompat.Builder(this).setSmallIcon(R.drawable.notification).

                setContentTitle(songs.get(songPos).getTitle()).setContentText(songs.get(songPos).getArtist()).

                addAction(R.drawable.previous, "Previous", pendingIntentPrev).addAction(R.drawable.pause, "Pause", pendingIntentPlay).

                addAction(R.drawable.next, "Next", pendingIntentNext);

        Notification notification = builder.build();

        NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);

        notificationManager.notify(1, notification);

这是接收器的代码:


package asus.example.com.player;


import android.content.BroadcastReceiver;

import android.content.Context;

import android.content.Intent;


import java.util.Objects;

当我在调试器中观看时,我看到没有使用 Receiver 类,但我不明白为什么


DIEA
浏览 68回答 1
1回答

杨魅力

现在,您正在立即发送带有如下语句的广播:LocalBroadcastManager.getInstance(this).sendBroadcast(intentNext);你说你想Activity稍后开始:PendingIntent pendingIntentNext = PendingIntent.getActivity(this, 0, intentNext, PendingIntent.FLAG_UPDATE_CURRENT);(旁注:这无论如何都行不通,因为在intentNext中,您指定了一个从BroadcastReceivernot from扩展的类Activity)getBroadcast()它不应该是getActivity():Intent intentNext = new Intent(this, NotificationReceiver.class);intentNext.setAction(ACTION_NEXT);PendingIntent pendingIntentNext = PendingIntent.getBroadcast(this, 0, intentNext, PendingIntent.FLAG_UPDATE_CURRENT);另一件事:您在所有PendingIntents. 您必须对请求代码使用不同的值,因为共享相同请求代码的两个Intents 被认为是相同的Intent,因此您最终会得到所有三个 notificationButton触发相同的操作。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java