1

我正在开发一个应用程序,我们必须在其中生成带有操作按钮的通知。在我们决定更新通知处理以支持通知渠道(随 Android Oreo 8.0 发布)之前,它一直运行良好。我不知道这是否是原因,或者我们的实现中缺少某些东西导致通知操作按钮无响应。

下面提到的是代码片段......

NotificationCompat.Builder localCallNotificationBuilder = new NotificationCompat.Builder(mContext, <channelId>);

Intent intent = new Intent();
intent.setAction(IAppConstant.ICallingAction.INTENT_ACTION_DO_CANCEL);
PendingIntent pendingIntentHangUp = PendingIntent.getBroadcast(mContext, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
localCallNotificationBuilder.addAction(0, mRes.getString(R.string.label_cancel), intent);

localCallNotificationBuilder.setContentText(notificationContent)
            .setTicker(notificationContent)
            .setOnlyAlertOnce(true)
            .setSmallIcon(R.drawable.notification_bar_icon)
            .setLargeIcon(userImageBitmap)
            .setStyle(new NotificationCompat.BigTextStyle().bigText(notificationContent))
            .setOngoing(true);

notificationManager.notify(IAppConstant.IGenericKeyConstants.CALL_NOTIFICATION_ID, localCallNotificationBuilder.build());

我有一个接收器类,我正在听这个“INTENT_ACTION_DO_CANCEL”。但是这个接收器永远不会被调用。

PS 我尝试了链接Pending intent is not working on Android O中提到的解决方案, 但没有成功。

编辑

下面提到的是更新的操作(根据链接中提到的建议具有明确的意图

Intent intentAction = new Intent(mContext, NotificationActionReceiver.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast(mContext, 0, intentAction, PendingIntent.FLAG_UPDATE_CURRENT);
localCallNotificationBuilder.addAction(0, mRes.getString(R.string.label_cancel), pendingIntent);

<!-- Notification Action Receiver(Manifest entry) -->
<receiver android:name=".reciever.NotificationActionReceiver" />

我确信缺少一些我无法弄清楚的东西。

4

0 回答 0