Android: programmatically adding buttons to notification

BrickT picture BrickT · Apr 3, 2016 · Viewed 8.2k times · Source

I am trying programmatically add Imagebuttons to notification, but I cannot find work method for this. I know this is possible, because I saw similar app

This is how I build notification:

public class MyNotification extends Notification {
private Context ctx;

public Context getCtx() {
    return ctx;
}

private NotificationManager mNotificationManager;


public MyNotification(Context ctx, int layout_id) {
    super();
    this.ctx = ctx;
    String ns = Context.NOTIFICATION_SERVICE;

    mNotificationManager = (NotificationManager) ctx.getSystemService(ns);
    CharSequence tickerText = "Shortcuts";
    long when = System.currentTimeMillis();

    Notification.Builder builder = new Notification.Builder(ctx);
    Notification notification = builder.getNotification();
    notification.when = when;
    notification.tickerText = tickerText;
    notification.icon = R.drawable.ic_launcher;



    RemoteViews contentView = new RemoteViews(ctx.getPackageName(), layout_id);



    //set button listners
    setListeners(contentView);

    notification.contentView = contentView;
    notification.flags |= Notification.FLAG_ONGOING_EVENT;
    mNotificationManager.notify(1387, notification);

}

And how i try to add ImageButton

  RemoteViews button = new RemoteViews(ctx.getPackageName(), R.layout.image_btn_layout_test);


    Intent actionIntent = new Intent("MyIntent");
    PendingIntent pendingIntent = PendingIntent.getBroadcast(ctx, 0, actionIntent, 0);
    button.setOnClickPendingIntent(R.id.image, pendingIntent);

    contentView.addView(R.layout.noti_layout, button);

Answer

Konstantin Berkov picture Konstantin Berkov · Apr 5, 2016

Read through these questions:

How to add button to notifications in android?
Adding button action in custom notification
Handling buttons inside android notifications

Also take look at the Notification Actions developers guide.

Also it looks like after a notification is created you cannot add actions, so you should create new notification with specified actions, and then replace previous one (assign id to your notifications).