带有关闭通知功能的多个通知操作按钮

问题描述 投票:1回答:1

我有一个将某些实体与唯一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);
    }
}
android notifications broadcastreceiver
1个回答
0
投票

我认为问题在于将0传递到PendingIntent:

PendingIntent btPendingIntent = PendingIntent.getActivity(getApplicationContext(), 0, buttonIntent, 0);

在开始传递通知ID作为第二个参数之前,我遇到了同样的问题;因此,不要传递0,而是传递通知的ID:

PendingIntent btPendingIntent = PendingIntent.getActivity(getApplicationContext(), NOTIFICATION_ID, buttonIntent, 0);

[进行更改后,我发现单击单个通知(尤其是组中的通知)时,所有内容均按预期工作。

© www.soinside.com 2019 - 2024. All rights reserved.