2016-05-14 24 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); 
    } 
}