Я пытаюсь отобразить уведомление в панели уведомлений

#android

#Android

Вопрос:

Это код, который я пытаюсь использовать для этого. У меня нет никаких ошибок в android Studio, но при нажатии кнопки ничего не происходит. Я еще не на 100% в Android Studio, так что не переоценивайте малейшие ошибки.

 @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate ( savedInstanceState );
        setContentView ( R.layout.activity_notifications );


        Button btncreate = findViewById ( 
 R.id.btnCreateNotification );
        btncreate.setOnClickListener ( new 
View.OnClickListener () {
            @Override
            public void onClick(View view) {
                createNotification();
            }
        } );

    public void createNotification(){


         Intent intent = new Intent (this, 
NotificationRecieverActivity.class);
         PendingIntent pendingIntent = 
 PendingIntent.getActivities (this,(int) 
 System.currentTimeMillis (), new Intent[]{intent}, 0 );

         Notification notification = new Notification.Builder 
 (this   )
            .setContentTitle("Title Notification")
            .setContentText("this is the title notification")
            .setSmallIcon(R.drawable.notificationbell)
            .setContentIntent(pendingIntent)
            .build();

        NotificationManager notificationManager = 
  (NotificationManager) getSystemService ( 
  NOTIFICATION_SERVICE );
        notification.flags = 
   Notification.FLAG_AUTO_CANCEL;

         notificationManager.notify(0, notification);


   }


 }
  

Ответ №1:

если вы используете приведенный выше код под версией oreo, он будет работать отлично, но с версии oreo уведомление изменено, пожалуйста, смотрите Ответ…

В Вашей Деятельности……….

 createChannel()

 NotificationCompat.Builder builder=new NotificationCompat.Builder(this, 
 NOTIFICATION_CHANNEL_ID);

    builder
            .setShowWhen(false)
            .setSmallIcon(android.R.drawable.ic_media_play)
            .setLargeIcon(description.getIconBitmap())
            .setColor(this.getResources().getColor(R.color.colorPrimaryDark))
            .setContentTitle(description.getTitle())
            .setContentText(description.getSubtitle())
            .setContentIntent(ContentPI)
            .setVisibility(NotificationCompat.VISIBILITY_PUBLIC)
            .addAction(android.R.drawable.ic_media_previous,"",backPI)
            .addAction(index,"",PPIntent)
            .addAction(android.R.drawable.ic_media_next,"",nextPI)
            .addAction(android.R.drawable.ic_menu_close_clear_cancel,"",StopPi)
            .setColorized(true)

    startForeground(id, builder.build());
  

Способ создания канала…

 public void createChannel()
{
     NotificationChannel channel;
    if (Build.VERSION.SDK_INT>=Build.VERSION_CODES.O)
    {
         channel=new NotificationChannel(NOTIFICATION_CHANNEL_ID,
                "Channel one" , NotificationManager.IMPORTANCE_LOW);
        channel.setLightColor(Color.BLUE);
        channel.setLockscreenVisibility(Notification.VISIBILITY_PUBLIC);
        NotificationManager manager = (NotificationManager) 
                getSystemService(Context.NOTIFICATION_SERVICE);
        assert manager != null;
        manager.createNotificationChannel(channel);

    }
  

Комментарии:

1. Хорошо, я бы попробовал это, спасибо. Но куда мне поместить код, относящийся к моменту касания уведомления, чтобы приложение открывалось в указанном действии

2. вы должны указать свое ожидающее намерение открыть действие в .setContentIntent()