2016-05-14 12 views
0

Ich habe versucht herauszufinden, wie ich einen Benutzer ein Datum für ein Element in meiner App festlegen lassen kann, und dann an dem Datum, für das es festgelegt wurde, ein Benachrichtigung in der Benachrichtigungsleiste, auch wenn sie nicht in der App sind.Hinzufügen einer Erinnerung an die Benachrichtigungsleiste nach Datum

Jede Hilfe wäre großartig. Danke

+0

erstellen Sie eine Erinnerung Anwendung @ Mason Richardson erstellen möchten – Lampard

Antwort

1

Sie können DatePicker verwenden, um Datum vom Benutzer zu nehmen. Verwenden Sie den Alarm-Manager, um den eingestellten Alarm einzustellen, und erstellen Sie dann eine onReceive-Methode, um eine Benachrichtigung zu erstellen.

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); 

eine neue Java-Datei AlarmReceiver.java in manifest Add Code unten

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

In 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); 
    } 
}