如何在通知中的按钮上添加侦听器(自定义布局)

时间:2013-11-27 11:11:08

标签: android button notifications listener

我有一个通知布局,如下所示:

Notification screenshot

我的服务正在进行。我想要在按下停止按钮时向我的服务发送通知/事件。通知视图上的点击事件不是必需的。

按下按钮后,我希望我的服务停止。

目前,我正试图通过向活动发送广播来做到这一点(因为我没有找到直接通知服务按钮按下的方法)。

我目前的代码是:

Intent intent = new Intent(this, MediaEventsReceiver.class);
PendingIntent pending = PendingIntent.getActivity(this, 1, intent, 0);
contentView.setOnClickPendingIntent(R.id.btnStop, pending);

我还在清单中添加了reciver:

<receiver android:name=".activities.SplashActivity$MediaEventsReceiver" />

请使用代码示例进行解释。

2 个答案:

答案 0 :(得分:4)

<强>解决:

我使用了PendingIntent点击按钮时调用的另一个活动。 新活动绑定服务并向其发送停止消息。 在它之后,它解开并完成。

<强> STILL:

我想要一个不涉及第三项活动的解决方案。应该是按钮单击通知直接通知服务和服务停止的方式。此任务不需要任何活动。

答案 1 :(得分:2)

我正在使用SINGLE活动开发音乐播放器应用。您可以像这样在按钮中添加监听器:

  1. 绑定意图
  2. Intent intent = new Intent("ACTION_NAME"); PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT); views.setOnClickPendingIntent(R.id.previousImageView, pendingIntent);

    1. 实施自定义BroadcastReceiver
    2. private class ActionBroadcastReceiver extends BroadcastReceiver { public void onReceive(Context context, Intent intent) { switch (intent.getAction()) { case "ACTION_NAME": { doSomething(); break; } } } }

      1. 注册您的BroadcastReceiver
      2. IntentFilter filter = new IntentFilter(); filter.addAction("ACTION_NAME"); ActionBroadcastReceiver actionBroadcastReceiver = new ActionBroadcastReceiver(); registerReceiver(actionBroadcastReceiver, filter);