2

создать уведомление в Service (запускается из BroadcastReceiver) таким образом:Уведомления отменяется по другому в Android Lollipop

this.notification = new NotificationCompat.Builder(getApplicationContext()) 
    .setContentTitle("Foo") 
    .setContentText("Bar") 
    .setSmallIcon(R.drawable.logo) 
    .setContentIntent(pIntent) 
    .build(); 
this.initializeNotificationSound(volumne, Uri.parse(melody)); 
this.initializeNotificationVibration(); 

notification.flags = Notification.FLAG_INSISTENT; 
this.notificationManager.cancelAll(); 
this.notificationManager.notify(0, notification); 

Это уведомление устанавливаются, когда конкретный SMS принимаются. Я хочу создать уведомление, которое будет воспроизводить определенную мелодию и не будет прервано стандартным уведомлением SMS.

Эта функция работает довольно хорошо, однако в леденец, следующий сценарий происходит:

  1. SMS получено
  2. Мое уведомление запускается
  3. Через некоторое время, звуковое оповещение прекращается и по умолчанию SMS рингтон

Это происходит только в том случае, если режим мелодии звонка отключен. В противном случае он работает так, как ожидалось, из-за метода cancelAll(), который прерывает уведомление SMS.

Заранее благодарим за ваш ответ.

ответ

0

Вы не можете изменить это. Если вы заметили, что одновременно создается несколько уведомлений, даже из единственного приложения (например, Facebook), звук, который они создают, воспроизводится одновременно. Это связано с управлением уведомлениями самой системы Android. Возможно, проблема, с которой вы сталкиваетесь, связана с некоторыми изменениями кода, внесенными в конкретную версию системы Android (уровень API), возможно, в метод cancelAll(). Одним из решений было бы найти соответствующую строку кода для проверки текущей версии системы. Например:

if(System_version <= lollipop) { 
//code works fine. Keep as it is 
} 
else{ 
//find the appropriate method and call it here. 
} 
+0

Я бы по достоинству оценил один из следующих: 1: запустить другое уведомление из «стека» только после того, как я отменил мой. 2. Запустите мое уведомление еще раз, после того, как закончится другая (прерванная моя). –

+0

1: Попробуйте выполнить поиск [документация] (http://developer.android.com/reference/android/app/Notification.html) и найдите соответствующий флаг для использования. 2: Попробуйте 1 и сообщите мне, если он работает –