Уведомление Android 8 (Oreo) не отображается - PullRequest
0 голосов
/ 13 июня 2018
Intent intent = new Intent(this, SplashActivity.class);
                Bundle bundle = new Bundle();
                bundle.putString("splash", psd);
                bundle.putString("targetId", targetId);
                intent.putExtras(bundle);
                intent.setAction(psd);
                intent.setAction(targetId);
                intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK);
                PendingIntent pendingIntent = PendingIntent.getActivity(getApplicationContext(), id, intent,
                        0);


                Uri defaultSoundUri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
                NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(this)
                        .setSmallIcon(android.R.drawable.ic_notification_overlay)
                        .setContentTitle(title)
                        .setContentText(remoteMessage.getData().get("body"))
                        .setAutoCancel(true)
                        .setStyle(new NotificationCompat.BigTextStyle().bigText("" + remoteMessage.getData().get("body")))
                        .setContentIntent(pendingIntent)
                        .setSound(defaultSoundUri);

                NotificationCompat.InboxStyle inboxStyle =
                        new NotificationCompat.InboxStyle();
                String[] events = new String[6];
                inboxStyle.setBigContentTitle("" + title);
                for (int i = 0; i < events.length; i++) {
                    inboxStyle.addLine(events[i]);
                }

                //.setContentIntent(pendingIntent);
                NotificationManager notificationManager =
                        (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
                notificationManager.notify(id, notificationBuilder.build());

Раньше он работал, не знаю, что происходит на новых устройствах Android, таких как Android O. Я не пытался вернуться на старые устройства, но это происходит на пикселях.

Ответы [ 4 ]

0 голосов
/ 28 сентября 2018

попробуйте этот код, он отлично работает для меня.

        Uri soundUri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);

        PendingIntent resultPendingIntent = PendingIntent.getActivity(this, 0, resultIntent, PendingIntent.FLAG_CANCEL_CURRENT);

        NotificationCompat.InboxStyle inboxStyle = new NotificationCompat.InboxStyle();

        inboxStyle.addLine(message);

        NotificationManager mNotificationManager = (NotificationManager) getApplicationContext().getSystemService(Context.NOTIFICATION_SERVICE);

        if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.O) {
            NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(getApplicationContext(),"channel_01")
                    .setSmallIcon(R.mipmap.ic_launcher)
                    .setContentText(message)
                    .setContentIntent(resultPendingIntent)
                    .setAutoCancel(true)
                    .setPriority(Notification.PRIORITY_HIGH)
                    .setChannelId("channel_01")
                    .setSound(RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION))
                    .setStyle(inboxStyle)
                    .setContentTitle(Title);

            mNotificationManager.notify(Notification_ID, mBuilder.build());

            NotificationChannel channel = new NotificationChannel(Notification_ID, "Playback Notification", NotificationManager.IMPORTANCE_HIGH);
            channel.enableLights(true);
            channel.enableVibration(true);
            channel.setVibrationPattern(new long[]{100, 200, 300, 400, 500, 400, 300, 200, 400});
            assert mNotificationManager != null;
            mBuilder.setChannelId("channel_01");
            mNotificationManager.createNotificationChannel(channel);

        }else {
            NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(getApplicationContext(),Notification_ID)
                    .setSmallIcon(R.mipmap.ic_launcher)
                    .setContentTitle(Title)
                    .setContentIntent(resultPendingIntent)
                    .setContentText(message)
                    .setStyle(inboxStyle)
                    .setSound(soundUri)
                    .setAutoCancel(true);
            mNotificationManager.notify(Notification_ID, mBuilder.build());
        }
0 голосов
/ 13 июня 2018

Я сам разобрался с этим, вам нужно настроить каналы в Oreo, см. Мой предыдущий пост по этому вопросу - я думал, что это была проблема с мастер-деталями !!!Оказывается, у Oreo есть дополнительный атрибут, который вам нужен, но, по-видимому, он потерпит молчание, если вы его не предоставите.

0 голосов
/ 13 июня 2018

Настройка каналов уведомлений.Пример кода ниже

   public static void createNotificationChannel(final Context context, final 
          String channelId, final CharSequence channelName, final String channelDescription, final int importance, final boolean showBadge) {

    try {
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
            postAsyncSafely("createNotificationChannel", new Runnable() {
                @Override
                public void run() {

                    NotificationManager notificationManager = (NotificationManager) context.getSystemService(NOTIFICATION_SERVICE);
                    NotificationChannel notificationChannel = new NotificationChannel(channelId, channelName, importance);
                    notificationChannel.setDescription(channelDescription);
                    notificationChannel.setShowBadge(showBadge);
                    notificationManager.createNotificationChannel(notificationChannel);
                    Logger.i("Notification channel " + channelName.toString() + 
                   " has been created");

                }
            });
        }
    }catch (Throwable t){
        Logger.v("Failure creating Notification Channel",t);
    }

}
0 голосов
/ 13 июня 2018

Начиная с Android 8.0 (уровень API 26), все уведомления должны быть назначены каналу.Для каждого канала вы можете установить визуальное и слуховое поведение, которое применяется ко всем уведомлениям в этом канале.Затем пользователи могут изменить эти настройки и решить, какие каналы уведомлений из вашего приложения должны быть навязчивыми или видимыми вообще

Каналы уведомлений

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...