1

enter image description here

I am trying to create a notification for Incoming call. For that I have added two actions in notification. My action text only is displayed.Action icon is not displayed in notification. I want to add icon near Answer and cancel which I added as AddAction in Notification. I have added action icon like below,

 NotificationCompat.Action answerAction = new NotificationCompat.Action.Builder(R.drawable.answer_call_icon, "Answer", pendingIntent).build(); NotificationCompat.Action cancelAction = new NotificationCompat.Action.Builder(R.drawable.cancel, "Cancel", pendingIntent).build(); NotificationCompat.Builder builder = new NotificationCompat.Builder(this, NOTIFICATION_CHANNEL_ID) .setLargeIcon((BitmapFactory.decodeResource(getResources(), R.drawable.call_logo))) .setContentTitle(intent.getStringExtra("Number")) .setSmallIcon(R.drawable.call_logo) .setContentIntent(pendingIntent) .setAutoCancel(true) .setFullScreenIntent(pendingIntent, true) .setCategory(NotificationCompat.CATEGORY_CALL) .addAction(answerAction) .addAction(cancelAction) .setPriority(NotificationCompat.PRIORITY_HIGH); NotificationManagerCompat nManager = NotificationManagerCompat.from(this); nManager.notify(2,builder.build()); 

One more query, Below is my notification channnel,

NotificationChannel chan = new NotificationChannel(NOTIFICATION_CHANNEL_ID, channelName, NotificationManager.IMPORTANCE_HIGH); chan.setLightColor(Color.BLUE); chan.setLockscreenVisibility(Notification.FLAG_FOREGROUND_SERVICE); chan.setImportance(NotificationManager.IMPORTANCE_HIGH); chan.setSound(defaultRingToneUri,audioAttributes); chan.enableLights(true); chan.shouldShowLights(); chan.setVibrationPattern(vibrate); chan.enableVibration(true); Context context=getApplicationContext(); NotificationManager manager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE); assert manager != null; manager.createNotificationChannel(chan); 

Not able to get ringtone while receiving notification. Is the way Im setting sound is right?? Anybody please help me to solve this... Posted 2 days ago..but till now not able to find solution.

2
  • @VahidHoseini I want to achieve like WhatsApp incoming call with Answer and Decline actions... Commented Mar 24, 2020 at 13:45
  • have you seen this? developer.android.com/training/notify-user/custom-notification aparently you can defie a custom layout for a notification. not surw how powerful it is though Commented Mar 28, 2020 at 3:44

4 Answers 4

4

As per the Notifications in Android N blog post:

Notification actions have also received a redesign and are now in a visually separate bar below the notification.

You’ll note that the icons are not present in the new notifications; instead more room is provided for the labels themselves in the constrained space of the notification shade. However, the notification action icons are still required and continue to be used on older versions of Android and on devices such as Android Wear.

So it is expected that you do not see the icons associated with notification actions.

Sign up to request clarification or add additional context in comments.

1 Comment

Note that notification channels are not editable after creation (they become the user's settings to change, not your app's) - you'll need to completely uninstall and reinstall your app if you want to change the channel's ringtone.
1

If you need more flexibility in creating the notification layout, go for the custom one.

Ref: https://developer.android.com/training/notify-user/custom-notification

Use the Drawable left/right option to set an icon with text in the button.

// Get the layouts to use in the custom notification RemoteViews notificationLayout = new RemoteViews(getPackageName(), R.layout.notification_small); RemoteViews notificationLayoutExpanded = new RemoteViews(getPackageName(), R.layout.notification_large); // Apply the layouts to the notification Notification customNotification = new NotificationCompat.Builder(context, CHANNEL_ID) .setSmallIcon(R.drawable.notification_icon) .setStyle(new NotificationCompat.DecoratedCustomViewStyle()) .setCustomContentView(notificationLayout) .setCustomBigContentView(notificationLayoutExpanded) .build(); 

Comments

0

As I understand: you have a problem with your notification you can use this method :

 private void showSmallNotification(NotificationCompat.Builder mBuilder, int icon, String title, String message, String timeStamp, PendingIntent resultPendingIntent, Uri alarmSound) { NotificationCompat.InboxStyle inboxStyle = new NotificationCompat.InboxStyle(); inboxStyle.addLine(message); Notification notification; notification = mBuilder.setSmallIcon(icon).setTicker(title).setWhen(0) .setAutoCancel(true) .setContentTitle(title) .setContentIntent(resultPendingIntent) .setSound(alarmSound) .setStyle(inboxStyle) .setWhen(getTimeMilliSec(timeStamp)) .setContentText(message) .build(); NotificationManager notificationManager = (NotificationManager) mContext.getSystemService(Context.NOTIFICATION_SERVICE); notificationManager.notify(Constant.NOTIFICATION_ID, notification); } 

or this one :

 private void showBigNotification(Bitmap bitmap, NotificationCompat.Builder mBuilder, int icon, String title, String message, String timeStamp, PendingIntent resultPendingIntent, Uri alarmSound) { NotificationCompat.BigPictureStyle bigPictureStyle = new NotificationCompat.BigPictureStyle(); bigPictureStyle.setBigContentTitle(title); bigPictureStyle.setSummaryText(Html.fromHtml(message).toString()); bigPictureStyle.bigPicture(bitmap); Notification notification; notification = mBuilder.setSmallIcon(icon).setTicker(title).setWhen(0) .setAutoCancel(true) .setContentTitle(title) .setContentIntent(resultPendingIntent) .setSound(alarmSound) .setStyle(bigPictureStyle) .setWhen(getTimeMilliSec(timeStamp)) .setContentText(message) .build(); NotificationManager notificationManager = (NotificationManager) mContext.getSystemService(Context.NOTIFICATION_SERVICE); notificationManager.notify(Constant.NOTIFICATION_ID_BIG_IMAGE, notification); } 

Comments

0

To play ringtone you can make use of android mediaplayer as shown below:

Var _mediaPlayer = MediaPlayer.Create(this, Android.Provider.Settings.System.DefaultRingtoneUri); _mediaPlayer.Start(); Task.Delay(60 * 1000).ContinueWith(t => _mediaPlayer?.Stop()); //stop after 60sec 

You can take the global instance of _mediaPlayer and stop this as per user interaction with notification.

This is the c# xamarin android example, you can use the same class with java syntax.

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.