2

Der unten erwähnte Code funktioniert für alle Geräte unter Android O verison. Für Android O, addAction() -Methode funktioniert nicht, d. H. Schaltfläche klicken funktioniert nicht in Android O.
Jede Hilfe wäre willkommen.Notification.addAction funktioniert nicht in Android O

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

      Intent mediaPlayerReceiver = new Intent("com.consult.news.receiver.ACTION_PLAY"); 
      mediaPlayerReceiver.putExtra("NewsArticle", news); 
      PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 0, mediaPlayerReceiver, PendingIntent.FLAG_UPDATE_CURRENT); 

      Intent dismissNotification = new Intent("com.consult.news.receiver.DISMISS"); 
      dismissNotification.putExtra("Notification_ID", 1); 
      PendingIntent dismissNotificationIntent = PendingIntent.getBroadcast(context, 0, dismissNotification, PendingIntent.FLAG_UPDATE_CURRENT); 

      if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.O) { 
       String CHANNEL_ID = "my_channel_01"; 
       String CHANNEL_NAME = "my Channel Name"; 

       NotificationChannel notificationChannel = new NotificationChannel(CHANNEL_ID, CHANNEL_NAME, NotificationManager.IMPORTANCE_HIGH); 
       notificationChannel.enableLights(true); 
       notificationChannel.setLightColor(Color.RED); 
       notificationChannel.setShowBadge(true); 
       notificationChannel.setLockscreenVisibility(Notification.VISIBILITY_PUBLIC); 
       notificationManager.createNotificationChannel(notificationChannel); 
      } 

      NotificationCompat.Builder builder = new NotificationCompat.Builder(context, "my_channel_01") 
        .setSmallIcon(R.drawable.ic_notification_white) 
        .setColor(ContextCompat.getColor(context, R.color.accent)) 
        .setContentTitle(context.getString(R.string.Consult_Univadis_Title)) 
        .setStyle(new NotificationCompat.BigTextStyle().bigText(news)) 
        .addAction(isPlaying ? R.drawable.ic_notification_white : R.drawable.ic_notification_white, isPlaying ? "Play" : "Pause", pendingIntent) 
        .addAction(R.drawable.ic_notification_white, "Close", dismissNotificationIntent) 
        .setOngoing(true) 
        .setAutoCancel(false); 

      notificationManager.notify(1, builder.build()); 
+1

Kasse: https://stackoverflow.com/questions/35647821/android-notification-addaction-deprecated-in-api-23 –

+0

@HareshChhelana - Ich habe auch versucht, dass aber es funktioniert nicht in android O – Ragini

Antwort

4

Ich lief in die gleichen, in Android Oreo Sie es eine explizite Absicht vornehmen müssen (nicht genug, um den Empfänger auf dem Manifest mit Putten, in der Tat, es wird nicht die Aufmerksamkeit auf das bezahlen), so wenn Sie die Absicht machen, machen sie ausdrücklich die setClass Methode:

Intent mediaPlayerReceiver = new Intent("com.consult.news.receiver.ACTION_PLAY"); 
mediaPlayerReceiver.putExtra("NewsArticle", news); 
mediaPlayerReceiver.setClass(this, YourReceiver.class); 

Wo „this“ der Kontext ist und YourReceiver, die Empfängerklasse ist, dass Sie auf die Aktion zu hören erwarten.

Sie werden zu tun haben, das gleiche gilt für die dismissNotification Absicht

Lassen Sie mich wissen, ob dies für Sie gearbeitet. diese

+0

Dank es ist funktioniert, aber warum Benachrichtigungsschaltflächensymbole in Oreo nicht angezeigt werden. Hast du irgendeine Idee? – Ragini

+1

@Ragini Sie werden nicht die Symbole auf Nougat oder später anzeigen Ist eine Änderung im Design mit Android Nougat. Symbole, die durch addAction (Aktion Notification.Action) definiert sind, werden von Geräten nicht mehr angezeigt. Sie sind immer noch für ältere Geräte und Android Wear-Geräte erforderlich. https://android-developers.googleblog.com/2016/06/notifications-in-android-n.html "Sie werden feststellen, dass die Symbole nicht sind in den neuen Benachrichtigungen vorhanden sind, stattdessen wird mehr Raum für die Etiketten selbst in dem beschränkten Raum des Benachrichtigungsschirms bereitgestellt. Die Benachrichtigungsaktionssymbole sind jedoch immer noch erforderlich. –