What is the proper way to add an action to the notification in API 23
since addAction(int icon, CharSequence title, PendingIntent intent)
is deprec
Use Icon class at first parameter for Drawable if api level >= 23(marshmallow)
https://developer.android.com/reference/android/app/Notification.Action.Builder.html
https://developer.android.com/sdk/api_diff/23/changes/android.app.Notification.Action.Builder.html
example)
Notification.Action action = new Notification.Action.Builder(
Icon.createWithResource(this, R.drawable.ic_prev),
"action string",
pendingIntent).build();
//Exemple of notification with Button
private void scheduleNotificationWithButton(String message) {
int notifReCode = 1;
//What happen when you will click on button
Intent intent = new Intent(this, MainActivity.class);
PendingIntent pendingIntent = PendingIntent.getActivity(this, 1, intent, PendingIntent.FLAG_ONE_SHOT);
//Button
NotificationCompat.Action action = new NotificationCompat.Action.Builder(R.mipmap.ic_launcher, "Go", pendingIntent).build();
//Notification
Notification notification = new NotificationCompat.Builder(this)
.setSmallIcon(R.mipmap.ic_launcher)
.setContentText("Back to Application ?")
.setContentTitle("Amazing news")
.addAction(action) //add buton
.build();
//Send notification
NotificationManager notificationManager = (NotificationManager)
this.getSystemService(Context.NOTIFICATION_SERVICE);
notificationManager.notify(1, notification);
}
Instead of this one:
addAction (int icon, CharSequence title, PendingIntent intent)
This method was deprecated in API level 23.
Use:
addAction (Notification.Action action)
It's all in the developer docs!
So to use this:
first build your action with the NotificationCompat.Action.Builder
NotificationCompat.Action action = new NotificationCompat.Action.Builder(R.drawable.ic_prev, "Previous", prevPendingIntent).build();
Note: Use NotificationCompat.Action
And than add it to your notification:
yournotification.addAction(action);
You just have to use NotificationCompat.Builder builder in place of Notification.Builder builder because NotificationCompat.Builder allows you to build your application below Android Version 4.1
Solved by using NotificationCompat.builder:
String strTitle = getString(R.string.new_message);
String strText = getString(R.string.hi_whats_up);
Intent intent = new Intent(this, NotificationView.class);
intent.putExtra("title", strTitle);
intent.putExtra("text", strText);
PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
NotificationCompat.Builder builder = new NotificationCompat.Builder(this)
.setSmallIcon(R.mipmap.ic_launcher)
.setTicker("Notification Ticker")
.setContentTitle("Notification Title")
.setContentText("Notification Text")
.addAction(R.mipmap.ic_launcher, "Notification Action", pendingIntent)
.setContentIntent(pendingIntent)
.setAutoCancel(true);
NotificationManager notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
notificationManager.notify(0, builder.build());