Уведомление, отправленное из службы, не отображается - PullRequest
1 голос
/ 20 июня 2020

В настоящее время я пытаюсь внедрить в свое приложение уведомление pu sh, которое будет отправлено, как только будет установлено соединение inte rnet. Служба проверки соединения работает нормально и вызывается метод showNotifications (). Но уведомление не отображается на панели. Это код:

    private void showNotifications(){

    Intent intent = new Intent(APITest2.this, Start.class);
    intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
    intent.putExtra("notif","notify");
    PendingIntent contentIntent = PendingIntent.getActivity(APITest2.this, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);

    NotificationCompat.Builder builder= new NotificationCompat.Builder(APITest2.this)
            .setSmallIcon(R.drawable.ic_android)
            .setContentTitle("Title")
            .setContentText("Text")
            .setAutoCancel(true);

    builder.setContentIntent(contentIntent);

    NotificationManager notificationManager=(NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE);
    notificationManager.notify(0,builder.build());

}

Я что-то упустил?

Заранее благодарим за любую помощь!

Ответы [ 2 ]

0 голосов
/ 20 июня 2020

Создайте канал, как показано ниже,

Uri soundUri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
            AudioAttributes audioAttributes = new AudioAttributes.Builder()
                    .setContentType(AudioAttributes.CONTENT_TYPE_SONIFICATION)
                    .setUsage(AudioAttributes.USAGE_NOTIFICATION)
                    .build();
            String characterSequence = "Message Alert";
            NotificationChannel channel = new NotificationChannel(channelId, 
                               characterSequence,NotificationManager.IMPORTANCE_DEFAULT);
            channel.setSound(soundUri,audioAttributes );
            NotificationManager manager = (NotificationManager) 
            this.getSystemService(Context.NOTIFICATION_SERVICE);
            manager.createNotificationChannel(channel);
        }

Здесь необходимо передать идентификатор канала, как показано ниже,

NotificationCompat.Builder builder= new NotificationCompat.Builder(APITest2.this,channelId)

Также см. https://developer.android.com/training/notify-user/channels

Если вам нужно отображать хедз-ап уведомления, вам нужно установить уровень важности в канале уведомлений как IMPORTANCE_HIGH. И необходимо установить приоритет в построителе уведомлений, как показано ниже.

setPriority(NotificationCompat.PRIORITY_HIGH);
0 голосов
/ 20 июня 2020

Используйте диспетчер уведомлений, как показано ниже, для поддержки всех android версий

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

            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
                builder.setChannelId("com.package.name");

                NotificationChannel channel = new NotificationChannel(
                        "com.package.name",
                        "AppName",
                        NotificationManager.IMPORTANCE_HIGH
                );

                if (notificationManager != null) {
                    notificationManager.createNotificationChannel(channel);
                }
            }

            notificationManager.notify(0, builder.build());
...