Android 在特定时间获取一次通知
在这里,我需要在特定日期收到通知。这就是我到目前为止所做的 这是我的主要活动Android 在特定时间获取一次通知,android,notifications,alarmmanager,Android,Notifications,Alarmmanager,在这里,我需要在特定日期收到通知。这就是我到目前为止所做的 这是我的主要活动 public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Calendar ca
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.MONTH, calendar.MAY);
calendar.set(Calendar.YEAR, 2014);
calendar.set(Calendar.DAY_OF_MONTH, 4);
calendar.set(Calendar.HOUR_OF_DAY, 15);
calendar.set(Calendar.MINUTE, 24);
calendar.set(Calendar.SECOND, 19);
Intent intent = new Intent(MainActivity.this, AlarmBroadcastReceiver.class);
PendingIntent pintent =
PendingIntent.getBroadcast(MainActivity.this, 0, intent, 0);
AlarmManager alarm = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
alarm.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), pintent);
}
}
这是我的听筒
public class AlarmBroadcastReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
notificationStatus(context);
}
/**
* To show notification for the alarm on time that is set as reminder
* @param context
*/
private void notificationStatus(Context context) {
final NotificationManager mNotificationManager = (NotificationManager)
context.getSystemService(Context.NOTIFICATION_SERVICE);
final int icon = R.drawable.ic_launcher;
final CharSequence tickerText = context.getString(R.string.event);
final long when = System.currentTimeMillis();
final Notification notification = new Notification(
icon, "Happy Birthday", when);
final Intent notificationIntent = new Intent(
context.getApplicationContext(), MainActivity.class);
final PendingIntent contentIntent = PendingIntent.getActivity(
context.getApplicationContext(), 0, notificationIntent, 0);
notification.setLatestEventInfo(context, tickerText,
"Happy Birthday", contentIntent);
mNotificationManager.notify(1, notification);
}
}
一切正常。我会在需要的时候收到通知,但每次打开应用程序时也会出现通知。我的代码有什么问题
提前感谢。这是因为您已将通知生成代码放置在应用程序的onCreate方法中,因此每次打开活动时它都会调用。因此,请为创建通知创建一个方法,并在需要生成通知时调用它。通知不是在应用程序的onCreate中创建的,甚至不是在活动的onCreate中创建的。如果时间是过去的,则代码应立即显示通知。根据当前时间与硬编码值的比较,您将立即收到通知。