我想在Android中创建一个具有过期日期的通知,这意味着在某个特定日期,如果它未打开,它将被自动销毁或删除。这可能吗?有人知道怎么做吗?
感谢您的帮助。
答案 0 :(得分:8)
如果您通过调用NotificationManager.cancel
获得通知ID,则可以删除自己应用的通知。要实施到期日期,您可以设置AlarmManager
警报,以唤醒只会取消通知的BroadcastReceiver
。 (如果通知不再存在,则取消的呼叫将不执行任何操作。)
// post notification
notificationManager.notify(id, notification);
// set up alarm
AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
Intent intent = new Intent(context, MyBroadcastReceiver.class);
intent.setAction("com.your.package.action.CANCEL_NOTIFICATION");
intent.putExtra("notification_id", id);
PendingIntent pi = PendingIntent.getBroadcast(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
// note: starting with KitKat, use setExact if you need exact timing
alarmManager.set(..., pi);
在你的BroadcastRecevier中......
@Override
public void onReceive(Context context, Intent intent) {
final String action = intent.getAction();
if ("com.your.package.action.CANCEL_NOTIFICATION".equals(action)) {
int id = intent.getIntExtra("notification_id", -1);
if (id != -1) {
NotificationManager notificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
notificationManager.cancel(id);
}
}
}
答案 1 :(得分:0)
https://developer.android.com/reference/android/app/Notification.Builder.html#setTimeoutAfter(long)
您可以指定一个持续时间(以毫秒为单位),如果该通知尚未取消,则应在该时间之后取消。