在我的应用程序中,我想根据用户的需要显示任意数量的每日通知(这是一种医疗提醒)。用户还设置新通知的时间。但我的应用程序目前只显示一个最新通知。你能帮我解决这个问题吗?
我创建新通知的代码(set小时
等由用户预先设置):
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.HOUR_OF_DAY, setHour);
calendar.set(Calendar.MINUTE, setMinute);
calendar.set(Calendar.SECOND, 0);
Intent intent1 = new Intent(ReminderActivity.this, AlarmReceiver.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast(ReminderActivity.this, MID,intent1, 0);
AlarmManager am = (AlarmManager) ReminderActivity.this.getSystemService(ReminderActivity.this.ALARM_SERVICE);
am.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), AlarmManager.INTERVAL_DAY, pendingIntent);
和我的AlarmReceiver:
public class AlarmReceiver extends BroadcastReceiver {
public static int MID = 0;
private static final String CHANNEL_ID = "this.is.my.channelId";
@Override
public void onReceive(Context context, Intent intent) {
Intent notificationIntent = new Intent(context, MainActivity.class);
TaskStackBuilder stackBuilder = TaskStackBuilder.create(context);
stackBuilder.addParentStack(MainActivity.class);
stackBuilder.addNextIntent(notificationIntent);
PendingIntent pendingIntent = stackBuilder.getPendingIntent(MID, 0);
Notification.Builder builder = new Notification.Builder(context);
Notification notification = builder.setContentTitle("Notification")
.setContentText("New Notification")
.setTicker("New Message Alert!")
.setSmallIcon(R.mipmap.ic_launcher)
.setVibrate(new long[]{1000, 1000, 1000, 1000, 1000})
.setContentIntent(pendingIntent).build();
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
builder.setChannelId(CHANNEL_ID);
}
NotificationManager notificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
//below creating notification channel, because of androids latest update, O is Oreo
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
NotificationChannel channel = new NotificationChannel(
CHANNEL_ID,
"NotificationDemo",
NotificationManager.IMPORTANCE_DEFAULT
);
notificationManager.createNotificationChannel(channel);
}
notificationManager.notify(MID, notification);
MID++;
}
}
在此处创建挂起内容时
PendingIntent pendingIntent = PendingIntent.getBroadcast(ReminderActivity.this, MID,intent1, 0);
请检查您没有传递相同的请求代码。在这种情况下,Android“重用”了之前创建的挂起的意图,这就是为什么您只会看到最新的通知,而不会看到多个通知。
避免该问题的最简单方法似乎是传递不同的请求代码(或其他参数,例如differentsetAction(…)
-请参阅下面的链接)以获取每种类型的通知。
有关更多信息,请查看Android如何比较待定意图:https://stackoverflow.com/a/20205696/2219237
我知道以前有人问过这个问题,但那篇文章中的解决方案对我不起作用。 我刚刚开始学习Android编程,当时正在做一个模型。它可以在Android Studio中正确显示,但不能在我的设备上显示。图像和背景色显示正确,但没有文本显示。我试过改变字体和字体颜色。需要改变什么? 我有另一个使用RelativeLayout的示例,它显示正确,但这个ConstraintLayout不正确。 第一个图像来自AS
我想通过javascript在html页面上显示当前日期。我试过了,但它在eclips浏览器中显示了currect日期,但在其他浏览器中没有显示currect日期,比如Chrome,Mozilla Firfox。你能帮我做这件事吗。.我的Java剧本是这样的。.
这是我的项的代码。问题是,每个项目都显示在一整页的应用程序中。请帮我解决这个问题:
通知通道的新代码在旧的和最新的奥利奥设备上运行良好,但当我在API 28(android P)设备上测试时,它没有在通知栏中显示通知,这是我用来启动前台通知的行。
我需要根据日期对列进行分组。 我使用下面的内容将我的开始时间列拆分为日期和时间。我想在COUNT栏中计算每个日期的发生次数。 例如 我该怎么做?
我正在使用一个警报对话框,显示一个菜单在应用程序的开始,我想要对话框显示我的两个值,是“名称”从一个对象,这里是警报对话框的代码: 是包含字符串“name”的对象,包含数组