为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

DIEA 2022-06-04 09:37:07
我有一个播放器,当用户选择一首歌曲时,播放器会通过 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 类,但我不明白为什么
查看完整描述

1 回答

?
杨魅力

TA贡献1811条经验 获得超6个赞

现在,您正在立即发送带有如下语句的广播:


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触发相同的操作。


查看完整回答
反对 回复 2022-06-04
  • 1 回答
  • 0 关注
  • 67 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号