Уведомление Android не показывает - PullRequest
0 голосов
/ 02 марта 2019

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

На эмуляторе показывается уведомление, а не в моем Samsung A8 (2018), у меня такой же код в другом приложении, он прекрасно работает.

  private void showSmallNotification( int icon, String title, String message, String timeStamp, PendingIntent resultPendingIntent, Uri alarmSound) {

        final NotificationCompat.Builder builder = new NotificationCompat.Builder(this, Constants.TOPIC_GLOBAL);

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

        inboxStyle.addLine(message);

        Notification notification;
        notification = builder
                .setChannelId(Constants.TOPIC_GLOBAL)
                .setAutoCancel(true)
                .setContentTitle(title)
                .setContentIntent(resultPendingIntent)
                .setSound(alarmSound)
                .setStyle(inboxStyle)
                .setWhen(getTimeMilliSec(timeStamp))
                .setSmallIcon(R.mipmap.ic_launcher)
                .setLargeIcon(BitmapFactory.decodeResource(this.getResources(), icon))
                .setContentText(message)
                .build();

        NotificationManager notificationManager = (NotificationManager) this.getSystemService(Context.NOTIFICATION_SERVICE);
        notificationManager.notify(100, notification);
    }

Ответы [ 2 ]

0 голосов
/ 02 марта 2019
 String CHANNEL_ID = "1";
    String CHANNEL_NAME = "Notification";

    Notification.Builder notification;

    if (Build.VERSION.SDK_INT >= 26) {
        NotificationChannel channel = new NotificationChannel(CHANNEL_ID, CHANNEL_NAME, NotificationManager.IMPORTANCE_HIGH);
        channel.enableVibration(true);
        channel.setLightColor(Color.BLUE);
        channel.enableLights(true);
        channel.setSound(Uri.parse(ContentResolver.SCHEME_ANDROID_RESOURCE + "://" + getApplicationContext().getPackageName() + "/" + R.raw.trial),
                new AudioAttributes.Builder()
                        .setContentType(AudioAttributes.CONTENT_TYPE_SONIFICATION)
                        .setUsage(AudioAttributes.USAGE_NOTIFICATION)
                        .build());
        channel.setLockscreenVisibility(Notification.VISIBILITY_SECRET);
        notificationManager.createNotificationChannel(channel);
        notification = new Notification.Builder(getApplicationContext(), CHANNEL_ID);
    } else {
        notification = new Notification.Builder(getApplicationContext());
        notification.setSound(Uri.parse(ContentResolver.SCHEME_ANDROID_RESOURCE + "://" + getPackageName() + "/" + R.raw.trial));
    }
    notification.setContentTitle(Title)
            .setVibrate(new long[]{0, 100})
            .setPriority(Notification.PRIORITY_MAX)
            .setContentText(ContentText)
            .setColor(ContextCompat.getColor(getApplicationContext(), R.color.green))
            .setLights(Color.RED, 3000, 3000)
            .setSmallIcon(R.drawable.ic_notifications_active_purple_24dp)
            .setContentIntent(pendingIntent)
            .setWhen(System.currentTimeMillis())
            .setAutoCancel(true);

    notificationManager.notify(CHANNEL_ID, 1, notification.build());
0 голосов
/ 02 марта 2019

Прежде чем вы сможете доставить уведомление на Android 8.0 и выше, вы должны зарегистрировать канал уведомлений вашего приложения в системе, передав экземпляр NotificationChannel для createNotificationChannel ().Поэтому следующий код заблокирован условием версии SDK_INT:

private void createNotificationChannel() {
    // Create the NotificationChannel, but only on API 26+ because
    // the NotificationChannel class is new and not in the support library
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
        CharSequence name = getString(R.string.channel_name);
        String description = getString(R.string.channel_description);
        int importance = NotificationManager.IMPORTANCE_DEFAULT;
        NotificationChannel channel = new NotificationChannel(CHANNEL_ID, name, importance);
        channel.setDescription(description);
        // Register the channel with the system; you can't change the importance
        // or other notification behaviors after this
        NotificationManager notificationManager = getSystemService(NotificationManager.class);
        notificationManager.createNotificationChannel(channel);
    }
}

Чтение этой статьи.

...