让我有一段时间。例如,{"11:40","11:55","16:15","20:05"}
。
首先,我需要在11:40
,然后在11:55
等处显示一些通知,直到结束。每个通知都有自己的标题和文字。并且它们不应该更新(我的意思是,如果用户未按状态栏按下或删除在11:40显示的通知,则不应将下一个通知置于之前的通知上)。我知道如何使用AlarmManager
和BroadcastReceiver
显示通知,但我不知道如何解决此问题。我想象解决方案如下:当应用程序第一次打开时,我设置闹钟以在index = 0
显示通知(其中index
是数组索引的索引)。显示第一个通知时,我更新index
并为下一个通知设置闹钟,依此类推,直到结束。最后,所有操作都取消,并且不会显示任何通知。但我无法想象如何构建这个想法。如何解决这个问题呢?可能吗?我需要Service
吗?你能提供有用的步骤来解决这个问题吗?
答案 0 :(得分:0)
您只需在给定时间调用此方法。
private void notificationManager(Context context, String message,long time) {
try {
long when = //Set your own time here by passing it in the function
NotificationManager notificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
Log.v("message", "," + message);
Intent notificationIntent = new Intent(context, SplashActivity.class);
notificationIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP);
PendingIntent intent = PendingIntent.getActivity(context, 0, notificationIntent, 0);
NotificationCompat.Builder builder = new NotificationCompat.Builder(context);
builder.setAutoCancel(true);
builder.setContentTitle(context.getString(R.string.app_name));
builder.setStyle(new NotificationCompat.BigTextStyle().bigText(message));
builder.setContentText(message);
builder.setTicker(message);
builder.setLights(Color.GREEN, 500, 500);
builder.setWhen(when);
builder.setLargeIcon(BitmapFactory.decodeResource(getResources(), R.mipmap.ic_launcher));
builder.setSmallIcon(R.mipmap.ic_launcher);
builder.setContentIntent(intent);
Notification notification = builder.build();
notification.ledARGB = 0xFFff0000;
notification.flags = Notification.FLAG_SHOW_LIGHTS;
notification.ledOnMS = 100;
notification.ledOffMS = 100;
notificationManager.notify(1, notification);
PowerManager pm = (PowerManager) context.getSystemService(Context.POWER_SERVICE);
PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.FULL_WAKE_LOCK | PowerManager.ACQUIRE_CAUSES_WAKEUP, "TAG");
wl.acquire(15000);
} catch (Exception e) {
e.printStackTrace();
}
}
只需在builder.set中传递时间,以毫秒为单位,您可以通过创建Calendar对象并在其中设置时间来完成。它会自动安排这些通知并在各自的时间显示它们。使用for循环一直传递并调用函数。
希望这个肝脏