2016-05-14 41 views
0

我一直在想如何让用户为我的应用中的某个项目设置一个日期,然后在其设置的日期,让它放置一个通知栏中的通知,即使它们不在应用程序中。按日期向通知栏添加提醒

任何帮助将是伟大的。谢谢

+0

做 – Lampard

回答

1

您可以使用DatePicker从用户获取Date。 使用报警管理器设置设置报警,然后onReceive方法建立通知。

AlarmManager alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE); 

     Intent notificationIntent = new Intent("android.media.action.DISPLAY_NOTIFICATION"); 
     notificationIntent.addCategory("android.intent.category.DEFAULT"); 

     PendingIntent broadcast = PendingIntent.getBroadcast(this, 100, notificationIntent, PendingIntent.FLAG_UPDATE_CURRENT); 

     Calendar cal = Calendar.getInstance(); 
     cal.add(Calendar.DATE, d); // Date for your notification 
     cal.add(Calendar.MONTH, m); // Date for your notification 
     cal.add(Calendar.YEAR, y); // Date for your notification 
     alarmManager.setExact(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), broadcast); 

创建一个新的Java文件AlarmReceiver.java 在下面的代码清单中添加

<receiver android:name=".AlarmReceiver"> 
      <intent-filter> 
       <action android:name="android.media.action.DISPLAY_NOTIFICATION" /> 
       <category android:name="android.intent.category.DEFAULT" /> 
      </intent-filter> 
     </receiver> 

在你想要创建一个提醒应用@梅森理查德森AlarmReceiver.java

import android.app.Notification; 
import android.app.NotificationManager; 
import android.app.PendingIntent; 
import android.content.BroadcastReceiver; 
import android.content.Context; 
import android.content.Intent; 
import android.support.v4.app.NotificationCompat; 
import android.support.v4.app.TaskStackBuilder; 

public class AlarmReceiver extends BroadcastReceiver{ 
    @Override 
    public void onReceive(Context context, Intent intent) { 
     Intent notificationIntent = new Intent(context, NotificationActivity.class); 

     TaskStackBuilder stackBuilder = TaskStackBuilder.create(context); 
     stackBuilder.addParentStack(NotificationActivity.class); 
     stackBuilder.addNextIntent(notificationIntent); 

     PendingIntent pendingIntent = stackBuilder.getPendingIntent(0, PendingIntent.FLAG_UPDATE_CURRENT); 

     NotificationCompat.Builder builder = new NotificationCompat.Builder(context); 

     Notification notification = builder.setContentTitle("Demo App Notification") 
       .setContentText("New Notification From Demo App..") 
       .setTicker("New Message Alert!") 
       .setSmallIcon(R.mipmap.ic_launcher) 
       .setContentIntent(pendingIntent).build(); 

     NotificationManager notificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE); 
     notificationManager.notify(0, notification); 
    } 
}