Adding onClick Action To Button In Notification

14,803

You may have to register your listner in AndroidManifest.xml. Take a look at this one

Share:
14,803

Related videos on Youtube

ariefbayu
Author by

ariefbayu

Project Manager at AkuPeduli.Org and a proud Mozilla Representative. I do blogging in Bahasa Indonesia. Code I wrote is CC-by-SA. Please, give proper attribution whenever you use it to generate money.

Updated on June 04, 2022

Comments

  • ariefbayu
    ariefbayu about 2 years

    I'm trying to add button to Notification using custom layout. I was able to add the layout and display the button. However, I still can't figure out a way to add click listener to the button. Here is the relevant code I have:

    Codes to add custom layout notification:

    String ns = Context.NOTIFICATION_SERVICE;
    mNotificationManager = (NotificationManager) ctx.getSystemService(ns);
    CharSequence tickerText = "Quick Application Launcher";
    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(), R.layout.custom_notification);
    
    Intent volume=new Intent(ctx, NotifActivityHandler.class);
    volume.putExtra("DO", "2");
    PendingIntent pVolume = PendingIntent.getActivity(ctx, 1, volume, 0);
    contentView.setOnClickPendingIntent(R.id.btn2, pVolume);
    
    notification.contentView = contentView;
    notification.flags |= Notification.FLAG_ONGOING_EVENT;
    mNotificationManager.notify(2345345, notification);
    

    This is the NotifActivityHandler code:

    public class NotifActivityHandler extends Activity {
    
        private NotifActivityHandler ctx;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            ctx=this;
            String action= (String)getIntent().getExtras().get("DO");
            Log.i("LOG", "lauching action: " + action);
            if(action.equals("1")){
            } else if(action.equals("2")){
            } else if(action.equals("config")){
                Intent i = new Intent(NotifActivityHandler.this, ConfigActivity.class);
                startActivity(i);
            }
        }   
    }
    

    Codes above doesn't produce any log even if I put Log.i. I'm not sure what is wrong with this. Any help is appreciated.

    update

    I tested this on ICS device.

  • ariefbayu
    ariefbayu about 11 years
    you are right, I forgot to register my NotifActivityHandler listener :(
  • Ashwin N Bhanushali
    Ashwin N Bhanushali about 10 years
    What if I do not want to launch activity on click of button I just want to take simple action.for example pause the song.