从API级别16 (Jelly Bean)开始,可以使用以下命令向通知添加操作
builder.addAction(iconId, title, intent);
但是,当我向通知中添加一个操作并按下该操作时,该通知不会被驳回。单击通知本身时,可以使用以下命令解除通知
notification.flags = Notification.FLAG_AUTO_CANCEL;
或
builder.setAutoCancel(true);
但很明显,这与与通知关联的操作无关。
有什么提示吗?或者这还不是API的一部分?我什么也没找到。
发布于 2012-08-09 21:15:23
当您在通知管理器上调用notify时,您为它提供了一个id -这是您以后可以用来访问它的唯一id (来自通知管理器:
notify(int id, Notification notification)
要取消,您可以调用:
cancel(int id)
使用相同的id。因此,基本上,您需要跟踪id,或者可能将id放入您在PendingIntent中添加到Intent的Bundle中?
发布于 2014-02-14 23:36:08
我发现,当你在扩展通知中使用动作按钮时,你必须编写额外的代码,而且你会受到更多的约束。
当用户单击操作按钮时,您必须手动取消通知。仅对默认操作自动取消通知。
此外,如果您从按钮启动广播接收器,通知抽屉也不会关闭。
我最终创建了一个新的NotificationActivity来解决这些问题。这个没有任何UI的中间活动取消通知,然后启动我真正想要从通知开始的活动。
我已经在相关的帖子Clicking Android Notification Actions does not close Notification drawer中发布了示例代码。
发布于 2015-08-02 22:24:08
在我看来,使用BroadcastReceiver
是一种更简洁的取消通知的方式:
在AndroidManifest.xml中:
<receiver
android:name=.NotificationCancelReceiver" >
<intent-filter android:priority="999" >
<action android:name="com.example.cancel" />
</intent-filter>
</receiver>
在java文件中:
Intent cancel = new Intent("com.example.cancel");
PendingIntent cancelP = PendingIntent.getBroadcast(context, 0, cancel, PendingIntent.FLAG_CANCEL_CURRENT);
NotificationCompat.Action actions[] = new NotificationCompat.Action[1];
NotificationCancelReceiver
public class NotificationCancelReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
//Cancel your ongoing Notification
};
}
https://stackoverflow.com/questions/11883534
复制相似问题