Android Studio:在1天,3天,5天之内安排通知

问题描述 投票:0回答:1

我希望在按下按钮时向设备发送通知,每个通知时间都有单独的按钮。例如,现在发送通知的按钮,在1天,3天,5天之内发送通知等。

我有办法吗?我已经查看了通知,并设法获得了根据请求发送的通知,但不知道如何安排在3天之内发送通知,等等。

java android android-notifications
1个回答
0
投票

使用以下代码:


public void scheduleNotification(Context context, long delay, int notificationId) {//delay is after how much time(in millis) from current time you want to schedule the notification

 NotificationCompat.Builder builder = new NotificationCompat.Builder(context) .setContentTitle(context.getString(R.string.title)) .setContentText(context.getString(R.string.content)) .setAutoCancel(true) .setSmallIcon(R.drawable.app_icon) .setLargeIcon(((BitmapDrawable) context.getResources().getDrawable(R.drawable.app_icon)).getBitmap()) .setSound(RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION));

 Intent intent = new Intent(context, YourActivity.class); 

PendingIntent activity = PendingIntent.getActivity(context, notificationId, intent, PendingIntent.FLAG_CANCEL_CURRENT);

 builder.setContentIntent(activity); Notification notification = builder.build(); 

Intent notificationIntent = new Intent(context, MyNotificationPublisher.class);
 notificationIntent.putExtra(MyNotificationPublisher.NOTIFICATION_ID, notificationId);
 notificationIntent.putExtra(MyNotificationPublisher.NOTIFICATION, notification); 

PendingIntent pendingIntent = PendingIntent.getBroadcast(context, notificationId, notificationIntent, PendingIntent.FLAG_CANCEL_CURRENT); 

long futureInMillis = SystemClock.elapsedRealtime() + delay;

 AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
 alarmManager.set(AlarmManager.ELAPSED_REALTIME_WAKEUP, futureInMillis, pendingIntent); 

}

然后,接收者类别:


public class MyNotificationPublisher extends BroadcastReceiver

 { public static String NOTIFICATION_ID = "notification_id"; 

public static String NOTIFICATION = "notification";

 @Override 

public void onReceive(final Context context, Intent intent) { NotificationManager notificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);

 Notification notification = intent.getParcelableExtra(NOTIFICATION); 

int notificationId = intent.getIntExtra(NOTIFICATION_ID, 0);
 notificationManager.notify(notificationId, notification);

 } }

然后,使用适当的参数调用scheduleNotification。

© www.soinside.com 2019 - 2024. All rights reserved.