Search code examples
javaandroidandroid-studiobroadcastreceiverandroid-notifications

How can I know which button was clicked in the notification?


I am developing an application, I have 2 buttons in an on the notification. How can I know which button the user has clicked?

This my Notification codes;

public void  NotificationSettings(Context context){
        Intent stateIntent = new Intent(context, MyBroadcastReceiver.class);
        stateIntent.putExtra("id", 100);
        PendingIntent pendingIntent =
                PendingIntent.getBroadcast(context, 0, stateIntent, PendingIntent.FLAG_UPDATE_CURRENT);

        builder = new NotificationCompat.Builder(context, "access2020")
                .setSmallIcon(R.drawable.ic_baseline_add_alert_24)
                .setContentTitle("Academy Notification")
                .setContentText("Hey this is an important notifications")
                .setPriority(NotificationCompat.PRIORITY_DEFAULT)
                .addAction(R.drawable.ic_baseline_add_alert_24, "Set Active", pendingIntent)
                .addAction(R.drawable.ic_baseline_add_alert_24,"Dismiss", pendingIntent);

        notificationManager = NotificationManagerCompat.from(context);
    }

and My Broadcast

public void onReceive(Context context, Intent intent) {
        Toast.makeText(context, "test", Toast.LENGTH_SHORT).show();
        int notificationId = intent.getIntExtra("id", 0);
        NotificationManagerCompat notificationManager = NotificationManagerCompat.from(context);
        notificationManager.cancel(notificationId);
        }

Solution

  • I solved with this way but still i am not sure it is the right way

    public void  NotificationSettings(Context context){
            Intent stateIntent0 = new Intent(context, MyBroadcastReceiver.class);
            Intent stateIntent1 = new Intent(context, MyBroadcastReceiver.class);
    
    
            stateIntent0.putExtra("id", 100);
            stateIntent1.putExtra("id", 200);
    
    
            PendingIntent pendingIntent0 =
                    PendingIntent.getBroadcast(context, 0, stateIntent0, PendingIntent.FLAG_UPDATE_CURRENT);
    
            PendingIntent pendingIntent1 =
                    PendingIntent.getBroadcast(context, 1, stateIntent1, PendingIntent.FLAG_UPDATE_CURRENT);
    
            builder = new NotificationCompat.Builder(context, "lemubitA")
                    .setSmallIcon(R.drawable.ic_baseline_add_alert_24)
                    .setContentTitle("Lemubit Academy Notification")
                    .setContentText("Hey this is an important notifications")
                    .setPriority(NotificationCompat.PRIORITY_DEFAULT)
                    .addAction(R.drawable.ic_baseline_add_alert_24, "Set Active", pendingIntent0)
                    .addAction(R.drawable.ic_baseline_add_alert_24,"Dismiss", pendingIntent1);
    
            notificationManager = NotificationManagerCompat.from(context);
        }
    

    AND this my Broadcast

    int notificationId = intent.getIntExtra("id", 0);
            Toast.makeText(context, notificationId+"", Toast.LENGTH_SHORT).show();
            NotificationManagerCompat notificationManager = NotificationManagerCompat.from(context);
            notificationManager.cancel(notificationId);