我有一个将某些实体与唯一ID关联并向用户通知实体的应用程序,我将使用notifyID与实体ID相同。
我完全根据以下sample solution进行了删除操作的通知,完全没有任何修改。
到目前为止,一切进展顺利,直到我尝试使用示例创建2个具有不同ID的通知。出现问题是,解除按钮仅接收第一个通知的notificationID:
第一个通知的行为符合预期。
但是,BroadcastReceiver中第二个通知的getExtra()
取而代之的是FIRST通知的notificationID,取消通知只是保持取消第一个通知。
我的创建通知功能,我只是使用不同的ID两次调用了此功能:
void createNoti(int NOTIFICATION_ID){
Intent buttonIntent = new Intent(context, ButtonReceiver.class);
buttonIntent.putExtra("notificationId", NOTIFICATION_ID);
PendingIntent btPendingIntent = PendingIntent.getActivity(getApplicationContext(), 0, buttonIntent, 0);
NotificationCompat.Builder mb = new NotificationCompat.Builder(getBaseContext());
mb.addAction(R.drawable.ic_Action, "My Action", btPendingIntent);
manager.notify(NOTIFICATION_ID, mb.build());
}
BroadcastReceiver类:
public class ButtonReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
int notificationId = intent.getIntExtra("notificationId", 0);
NotificationManager manager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
manager.cancel(notificationId);
}
}
我认为问题在于将0
传递到PendingIntent:
PendingIntent btPendingIntent = PendingIntent.getActivity(getApplicationContext(), 0, buttonIntent, 0);
在开始传递通知ID作为第二个参数之前,我遇到了同样的问题;因此,不要传递0
,而是传递通知的ID:
PendingIntent btPendingIntent = PendingIntent.getActivity(getApplicationContext(), NOTIFICATION_ID, buttonIntent, 0);
[进行更改后,我发现单击单个通知(尤其是组中的通知)时,所有内容均按预期工作。