如何从通知中联系服务的方法?

时间:2012-10-02 23:30:32

标签: android service notifications broadcast

我正在实施一个音乐播放器。通知允许用户暂停或跳过歌曲。 我用

Intent i = new Intent("com.package.app");
mExpandedView.setOnClickPendingIntent(R.id.next_song, PendingIntent.getBroadcast(this, 0, i, 0));

为了将此点击发送到承载MediaPlayer的MusicService和所有相关方法。我想直接调用此服务的方法部分(例如playNextSong()),但getService()似乎只允许我启动新服务,而不是调用服务中的方法,或获取一些数据。我甚至不需要启动该服务,因为音乐正在播放,它已经在运行。

有没有办法做到这一点我不知道?或者是:
通知广播到BroadcastReceiver,然后BroadcastReceiver向服务广播推荐的方式来完成这个动作? 做一些简单的事情看起来很复杂......

2 个答案:

答案 0 :(得分:0)

创建PendingIntent以将通知作为广播消息,自定义消息(使用您自己的字符串,如com.my.custom.broadcast.message.action)。在AndroidManifest中创建并注册将由此自定义操作触发的新广播接收器。广播接收器的OnReceive方法,根据传递给onReceive方法的服务类和上下文参数,使用自定义参数/动作或其他任何东西启动服务。

也许您可以尝试通过为此创建PendingIntent来直接启动服务,但我认为最好通过中间步骤来实现:BroadcastReceiver

答案 1 :(得分:0)

从通知中,您可以启动活动。该活动将执行“bindService”并在服务中调用适当的方法,然后完成()。该活动不需要具有UI,因此用户将看不到它。但这比广播接收者的代码更多。