通知在特定时间发送给用户Android

我正在尝试使用报警pipe理器在特定时间向用户发送通知。 基本上,没有任何反应,对我来说代码看起来很好。 我的闹钟pipe理器代码如下:

/** Notify the user when they have a task */ public void notifyAtTime() { Intent myIntent = new Intent(PlanActivity.this , Notification.class); AlarmManager alarmManager = (AlarmManager)getSystemService(ALARM_SERVICE); PendingIntent pendingIntent = PendingIntent.getService(PlanActivity.this, 0, myIntent, 0); Calendar calendar = Calendar.getInstance(); calendar.set(Calendar.HOUR_OF_DAY, 12); calendar.set(Calendar.MINUTE, 17); calendar.set(Calendar.SECOND, 00); alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), 24*60*60*1000 , pendingIntent); } 

“通知”类中的通知代码如下:

  public class Notification extends Service { @Override public void onCreate() { Toast.makeText(this, "Notification", Toast.LENGTH_LONG).show(); Intent intent = new Intent(this,PlanActivity.class); PendingIntent pending = PendingIntent.getActivity(this, 0, intent, 0); NotificationCompat.Builder mBuilder = new NotificationCompat.Builder( this).setSmallIcon(R.drawable.ic_launcher) .setContentTitle("Football") .setContentText("Don't forget that you have Football planned!") .setContentIntent(pending); NotificationManager manager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE); manager.notify(0, mBuilder.build()); } @Override public IBinder onBind(Intent intent) { // TODO Auto-generated method stub return null; } } 

通知类中设置的Toast也不会出现。 我不知道是否真的很愚蠢,我失踪,但任何帮助将不胜感激! 🙂

这是你的接收器类:

  public class OnetimeAlarmReceiver extends BroadcastReceiver { public void onReceive(Context context, Intent intent) { //Toast.makeText(context, "Repeating Alarm worked.", Toast.LENGTH_LONG).show(); // try here // prepare intent which is triggered if the // notification is selected Intent intent = new Intent(this, NotificationReceiver.class); PendingIntent pIntent = PendingIntent.getActivity(this, 0, intent, 0); // build notification // the addAction re-use the same intent to keep the example short Notification n = new Notification.Builder(this) .setContentTitle("New mail from " + "test@gmail.com") .setContentText("Subject") .setSmallIcon(R.drawable.icon) .setContentIntent(pIntent) .setAutoCancel(true) .addAction(R.drawable.icon, "Call", pIntent) .addAction(R.drawable.icon, "More", pIntent) .addAction(R.drawable.icon, "And more", pIntent).build(); NotificationManager notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE); notificationManager.notify(0, n); } } 

在第二个设置Alerm的活动中:

  private void setAlarm(){ Intent intent = new Intent(this, OnetimeAlarmReceiver.class); PendingIntent pendingIntent = PendingIntent.getBroadcast(this, REQUEST_CODE, intent, 0); AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE); alarmManager.set(AlarmManager.RTC_WAKEUP, System.currentTimeMillis() + alarm_time , pendingIntent); System.out.println("Time Total ----- "+(System.currentTimeMillis()+total_mili)); } 

我想推荐这个教程如何发送通知

尝试将您的通知代码放在onStartCommand函数中而不是onCreate中。

在应用程序的LAUNCHER活动的onCreate方法中写入警报pipe理器代码解决了我的问题