Manejo de botones dentro de las notificaciones de Android

Agregué un botón dentro de una notificación

pero no sé cómo hacer que llame a una función cuando se hace clic.

Probé un enfoque como este https://code.google.com/p/languagepickerwidget/source/browse/trunk/trunk/src/org/gnvo/langpicker/LangPicker.java ya que también está utilizando un objeto RemoteViews pero no ocurre nada cuando Hago clic en el botón.

Esto es lo que tengo actualmente:

private void createNotification(){ String ns = Context.NOTIFICATION_SERVICE; NotificationManager notificationManager = (NotificationManager) getSystemService(ns); Notification notification = new Notification(R.drawable.ic_launcher, null, System.currentTimeMillis()); RemoteViews notificationView = new RemoteViews(getPackageName(), R.layout.notification_switch); //the intent that is started when the notification is clicked (works) Intent notificationIntent = new Intent(this, SettingsActivity.class); PendingIntent pendingNotificationIntent = PendingIntent.getActivity(this, 0, notificationIntent, 0); notification.contentView = notificationView; notification.contentIntent = pendingNotificationIntent; notification.flags |= Notification.FLAG_NO_CLEAR; //this is the intent that is supposed to be called when the button is clicked Intent switchIntent = new Intent(this, switchButtonListener.class); PendingIntent pendingSwitchIntent = PendingIntent.getBroadcast(this, 0, switchIntent, 0); notificationView.setOnClickPendingIntent(R.id.buttonswitch, pendingSwitchIntent); notificationManager.notify(1, notification); } public static class switchButtonListener extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { Log.d("TAG", "test"); } } 

Puedo comenzar una actividad con el botón, pero no lo logré llamar a una función simple. Cuál sería la mejor forma de hacer esto?

Editar: descubrí que tenía que registrar “switchButtonListener” en AndroidManifest.xml

  

Fuente: Actividad de Android sin GUI

Ahora funciona.

Descubrí que tenía que registrar “switchButtonListener” en AndroidManifest.xml

  

Fuente: Actividad de Android sin GUI


Más tarde descubrí que también puedo usar código como este para lograr lo mismo sin modificar el manifiesto.

 switchButtonListener = new SwitchButtonListener(); registerReceiver(switchButtonListener, new IntentFilter(SWITCH_EVENT)); 

.

 public class switchButtonListener extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { Log.d("TAG", "test"); } } 

.

 Intent switchIntent = new Intent(LangService.SWITCH_EVENT); PendingIntent pendingSwitchIntent = PendingIntent.getBroadcast(context, 0, switchIntent, 0); notificationView.setOnClickPendingIntent(R.id.buttonswitch, pendingSwitchIntent); 

Tenga en cuenta que de esta manera puedo declarar la clase switchButtonListener sin el atributo estático (si no estático, se bloqueará en el ejemplo anterior) dándome mucha más flexibilidad.
No se olvide de llamar a unregisterReceiver () más tarde.