创建包含到期日期的Android通知

时间:2014-05-26 16:18:39

标签: android notifications android-notifications

我想在Android中创建一个具有过期日期的通知,这意味着在某个特定日期,如果它未打开,它将被自动销毁或删除。这可能吗?有人知道怎么做吗?

感谢您的帮助。

2 个答案:

答案 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)

您可以指定一个持续时间(以毫秒为单位),如果该通知尚未取消,则应在该时间之后取消。

来自: https://stackoverflow.com/a/56072643/969016