во время разговора на определенных устройствах не отображается уведомление - PullRequest
0 голосов
/ 18 октября 2019

Я занимаюсь разработкой приложения, которое отображает оповещение при входящем или исходящем звонке (проверено и работает, когда нет вызова). Функция прекрасно работает на многих устройствах (Xiomi, Huawei, Oppo). Но в последних устройствах Samsung уведомление об этом не показывается. Вместо этого уведомление остается в центре уведомлений, и пользователь должен провести вниз, чтобы увидеть уведомление. Кто-нибудь еще сталкивался с подобной проблемой и имеет решение?

Фрагменты кода:

private var manager: NotificationManager? = null

 val manger: NotificationManager
    get() {
        if(manager==null) {
            manager = if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
                applicationContext.getSystemService(NotificationManager::class.java)
            } else {
                applicationContext.getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager
            }
        }
        return manager!!
    }

private fun createNotificationChannel() {
      if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
        val mChannel = NotificationChannel(ID,NAME,NotificationManager.IMPORTANCE_HIGH)
    mChannel.setShowBadge(true)
    mChannel.enableVibration(true)
    mChannel.lockscreenVisibility=Notification.VISIBILITY_PUBLIC

    manger.createNotificationChannel(mChannel)

      }
  }

public static NotificationCompat.Builder showNotification(Context context, String notificationChannel, String Message, String title) {
        Bitmap picture = Utils.decodeResource(context.getResources(), R.drawable.notifi, 64, 64);
        return new NotificationCompat.Builder(context, notificationChannel)
                .setLargeIcon(picture)
                .setSmallIcon(R.drawable.splash_logo)
                .setColor(context.getResources().getColor(R.color.colorPrimaryDark))
                .setContentTitle(title)
                .setContentText(Message)
                .setAutoCancel(true)
                .setOngoing(true)
                .setDefaults(DEFAULT_SOUND | DEFAULT_VIBRATE)
                .setPriority(NotificationCompat.PRIORITY_MAX)
                .setCategory(Notification.CATEGORY_CALL)
                .setVibrate(new long[0])
                .setTimeoutAfter(10000);
    }

1 Ответ

1 голос
/ 18 октября 2019

В андроиде - у Heads up уведомлений есть встроенный лимит скорости.

Если пользователь смахивает ваши heads уведомления вверх (кладет их обратно в панель уведомлений) или в сторону (отклоняет их),затем это сигнализирует системе о том, что в течение некоторого промежутка времени (кроме того, по умолчанию на минуту) не поступают дальнейшие уведомления.

...