gpt4 book ai didi

java - Android 警报接收器从未触发

转载 作者:行者123 更新时间:2023-12-01 04:43:59 26 4
gpt4 key购买 nike

我正在尝试根据用户定义的值创建通知,但我的闹钟不起作用;它从未被触发。

fragment 代码:

// Set reminder
// From java.util.Calendar;
Calendar timeNow = Calendar.getInstance();
timeNow.setTimeInMillis(System.currentTimeMillis());

Calendar thatDate = Calendar.getInstance();
thatDate.setTimeInMillis(System.currentTimeMillis());



// add date and time to calender object

//** Im trying to set the alarm for the 20th of April, 2013 at 14:03**
thatDate.add(Calendar.MINUTE, 3 - timeNow.get(Calendar.MINUTE));
thatDate.add(Calendar.MONTH, 3 - timeNow.get(Calendar.MONTH)); //Its April, so I did 3 not 4

thatDate.add(Calendar.DAY_OF_MONTH,
20 - timeNow.get(Calendar.DAY_OF_MONTH));

thatDate.add(Calendar.HOUR, 14 - timeNow.get(Calendar.HOUR));
thatDate.add(Calendar.YEAR, 2013 - timeNow.get(Calendar.HOUR));


Intent alarmintent = new Intent(getActivity(),
AlarmReceiver.class);
alarmintent.putExtra("title", titleEt.getText().toString());
alarmintent.putExtra("note", desc.getText().toString());

PendingIntent sender = PendingIntent
.getBroadcast(getActivity(), ALARM_ID, alarmintent,
PendingIntent.FLAG_UPDATE_CURRENT
| Intent.FILL_IN_DATA);

/*
* VERY IMPORTANT TO SET FLAG_UPDATE_CURRENT... This will send
* the correct extra's informations to the AlarmReceiver class
*/

// Get the AlarmManager service

AlarmManager am = (AlarmManager) getActivity()
.getSystemService(Context.ALARM_SERVICE);
am.set(AlarmManager.RTC_WAKEUP, thatDate.getTimeInMillis() - timeNow.getTimeInMillis(), sender);

还有我的警报接收器代码:

public class AlarmReceiver extends BroadcastReceiver {

private static int NOTIFICATION_ID = 1;

@Override
public void onReceive(Context context, Intent intent) {

NotificationManager mNotificationManager = (NotificationManager) context
.getSystemService(Context.NOTIFICATION_SERVICE);
NotificationManager manger = (NotificationManager) context
.getSystemService(Context.NOTIFICATION_SERVICE);
Notification notification = new Notification(
R.drawable.ic_stat_reminder, "Todo Reminder",
System.currentTimeMillis());
PendingIntent contentIntent = PendingIntent.getActivity(context,
NOTIFICATION_ID, new Intent(context, AlarmReceiver.class), 0);
Bundle extras = intent.getExtras();
String title = extras.getString("title");

// Get the title and description of our Notification

/*
* Notification noti = new Notification.InboxStyle( new
* Notification.Builder() .setContentTitle("5 New mails from " +
* sender.toString()) .setContentText(subject)
* .setSmallIcon(R.drawable.new_mail) .setLargeIcon(aBitmap))
* .addLine(str1) .addLine(str2) .setContentTitle("")
* .setSummaryText("+3 more") .build();
*/

String note = extras.getString("note");
notification.setLatestEventInfo(context, note, title, contentIntent);
notification.flags = Notification.FLAG_INSISTENT;
notification.defaults |= Notification.PRIORITY_MAX;
// Set the default sound for our notification

// notification
manger.notify(NOTIFICATION_ID++, notification);

}
};

最佳答案

仅使用thatDateset的时间是实时的,不是延迟的。

 AlarmManager am = (AlarmManager) getActivity().getSystemService(Context.ALARM_SERVICE);
am.set(AlarmManager.RTC_WAKEUP, thatDate.getTimeInMillis(), sender);

关于java - Android 警报接收器从未触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16120702/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com