【发布时间】:2013-11-02 05:54:38
【问题描述】:
我有一个应用程序,它有一个持续的通知来帮助记忆。我希望能够使用其中一个操作按钮来关闭此通知,但我不想在按下按钮时打开应用程序。我更喜欢使用内置的通知操作按钮,而不是创建 RemoteViews 对象来填充通知。我看到一篇文章提到在我的应用程序中收到的此按钮上使用 BroadcastReceiver,虽然他的教程非常无用,但听起来这是朝着正确的方向发展。
Intent resultIntent = new Intent(getBaseContext(), Dashboard.class);
TaskStackBuilder stackBuilder = TaskStackBuilder.create(getBaseContext());
stackBuilder.addParentStack(Dashboard.class);
stackBuilder.addNextIntent(resultIntent);
PendingIntent resultPendingIntent =
stackBuilder.getPendingIntent(
0,
PendingIntent.FLAG_UPDATE_CURRENT
);
Intent cancel = new Intent(getBaseContext(), CancelNotification.class);
stackBuilder.addParentStack(Dashboard.class);
stackBuilder.addNextIntent(cancel);
PendingIntent pendingCancel =
stackBuilder.getPendingIntent(
0,
PendingIntent.FLAG_UPDATE_CURRENT
);
NotificationCompat.Builder mb = new NotificationCompat.Builder(getBaseContext());
mb.setSmallIcon(R.drawable.cross_icon);
mb.setContentTitle(ref);
mb.setContentText(ver);
mb.setPriority(NotificationCompat.PRIORITY_LOW);
mb.setOngoing(true);
mb.setStyle(new NotificationCompat.BigTextStyle().bigText(ver));
mb.setContentIntent(resultPendingIntent);
mb.addAction(R.drawable.ic_cancel_dark, "Dismiss", pendingCancel);
manager.notify(1, mb.build());
【问题讨论】:
-
你能不能说的更清楚你想要什么?用户不能关闭正在进行的通知,因此您的应用程序或服务必须注意取消它们。或者,正如您所说,使用
BroadcastReceiver绑定到操作按钮来执行此操作。BroadcastReceiver只需要在传递给它的通知 id 上调用 cancel()。您还需要取消/完成引发通知的事件 -
我想更一般地说,我只是希望能够在不打开应用程序的情况下按下通知按钮来做某事。那么我将如何实现 BroadcastReceiver 来执行任何操作,我试图阅读的教程非常不清楚。
标签: android notifications broadcastreceiver