问题描述
我现在正在 Android 中开发音乐播放器,并且目前无法使用通知。我在上一个、播放/暂停和下一个的通知中添加了三个操作。如果点击这些按钮,每个操作都需要一个 PendingIntent 来执行。
我的应用程序当前构建有一个 MainActivity 和一个服务,用于播放加载的音频文件。主要活动通过对服务的引用进行通信,以执行下一首歌曲等操作。
我想通过通知上的操作实现的是,将意图发送到服务本身,但不启动它或发送到 MainActivity,但如果它当前在后台,则不会将其带回前台。以便服务可以自己控制该操作,或者让 MainActivity 调用适当的方法。
经过一些研究,我发现有些人用广播接收器来做这件事,但据我所知,广播被发送到任何合适的应用程序,我绝对不想要。我也找不到指向解决方案的某些文档或类似内容。
最好的方法是什么?
感谢任何帮助!
解决方法
...但据我所知,广播被发送到任何合适的应用程序
如果您像在 guide on creating a Notification 中那样为您的 Intent
使用显式 BroadcastReceiver
,那么您可以确保没有其他组件会收到广播(从那里复制的代码片段) :
Intent snoozeIntent = new Intent(this,MyBroadcastReceiver.class);
snoozeIntent.setAction(ACTION_SNOOZE);
snoozeIntent.putExtra(EXTRA_NOTIFICATION_ID,0);
PendingIntent snoozePendingIntent =
PendingIntent.getBroadcast(this,snoozeIntent,0);
所以看起来应该是这样:让您的 BroadcastReceiver
实例决定应该控制应用的哪个组件。