Update notification vibrate/ringtone
-
05-06-2021 - |
Вопрос
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);
Решение
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.
Другие советы
NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(MainActivity.this)
long[] v = {500,1000}; notificationBuilder.setVibrate(v);
Uri uri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION); notificationBuilder.setSound(uri);