我正在开发一个应用程序,我们必须使用操作按钮生成通知。它工作正常,直到我们决定更新我们的通知处理以支持通知渠道(与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());
我有一个接收器课,我正在听这个&#34; INTENT_ACTION_DO_CANCEL&#34;。但这个接收器从未被调用过。
P.S。我尝试了链接中提到的解决方案 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" />
我确信有些遗漏,我无法弄明白。