Create an Android notification with expiration date

后端 未结 2 1457
粉色の甜心
粉色の甜心 2020-12-18 06:19

I would like to create a notification in Android that has an expiration date, meaning that on a certain date, if it\'s not open, it will be automatically destroyed or remove

相关标签:
2条回答
  • 2020-12-18 06:25

    https://developer.android.com/reference/android/app/Notification.Builder.html#setTimeoutAfter(long)

    you can specify a duration in milliseconds after which this notification should be canceled, if it is not already canceled.

    from: https://stackoverflow.com/a/56072643/969016

    0 讨论(0)
  • 2020-12-18 06:47

    You can remove your own app's notifications if you have the notification ID by calling NotificationManager.cancel. To implement the expiration, you can set an alarm with AlarmManager to wake up a BroadcastReceiver that will simply cancel the notification. (If the notification is no longer there, then the call to cancel will do nothing.)

    // 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);
    

    In your 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);
            }
        }
    }
    
    0 讨论(0)
提交回复
热议问题