Notification.addAction 在 Android 中不工作 O

Notification.addAction not working in Android O

下面提到的代码适用于 android 版本以下的所有设备。对于androidO, addAction() 方法不起作用,即按钮单击在 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());

我运行一样,在Android奥利奥你需要让它成为一个明确的Intent(将接收者放在清单上是不够的,事实上,它不会支付注意这一点),所以当你做出意图时,使用 setClass 方法使其明确:

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

其中 "this" 是上下文,YourReceiver 是您希望收听操作的接收器 class。

您必须为 dismissNotification 意图

执行相同的操作

如果这对你有用,请告诉我。