Update notification vibrate/ringtone

Kris B picture Kris B · May 4, 2012 · Viewed 7.7k times · Source

I am using the NotificationManager builder to show an alert in my app. I know that the first parameter for the notify method is an id and the framework will update the notification if it is already visible, but if I set the alert to play a ringtone or vibrate, does the ringtone/vibration also fire if an alert is updated?

    NotificationCompat.Builder nb = new NotificationCompat.Builder(this);
    nb.setContentTitle("title");
    nb.setContentText("message");
    nb.setSmallIcon(getResources().getIdentifier("drawable/alert", null, packageName));
    nb.setWhen(System.currentTimeMillis());
    nb.setAutoCancel(true);
    nb.setTicker("message");

    final Uri ringtone = Uri.parse(PreferenceManager.getDefaultSharedPreferences(this).getString("ringtone", getString(R.string.settings_default_ringtone)));

    nb.setDefaults(Notification.DEFAULT_VIBRATE);
    nb.setSound(ringtone);      
    nb.setDefaults(Notification.DEFAULT_LIGHTS);

    NotificationManager nm = (NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE);

    final Intent notificationIntent = new Intent(this, Main.class);
    notificationIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK);

    final PendingIntent contentIntent = PendingIntent.getActivity(this, 0, notificationIntent, 0);
    nb.setContentIntent(contentIntent);

    Notification notification = nb.getNotification();

    nm.notify(0, notification);

Answer

Kris B picture Kris B · May 4, 2012

Just tested this myself and the vibration/ringtones do fire off, even on an update.

UPDATE: Just an update, if you are using NotificationCompat.Builder or Notification.Builder you can set setOnlyAlertOnce to only sound the ringtone/vibrate once.