2016-10-09 2 views
1

Ich verstehe nicht, was los ist, aber mein Wecker läuft jeden Tag, auch wenn ich die Tag-Nummer hart codieren, ich habe keine Ahnung, was los ist ...Android - Alarm-Manager läuft jeden Tag

Intent notificationIntent = new Intent(AddTask.this,CustomBroadcastReceiver.class); 
notificationIntent.putExtra(Intent.EXTRA_UID,newTaskId); 
PendingIntent pendingIntent = PendingIntent.getBroadcast(AddTask.this, newTaskId, notificationIntent, PendingIntent.FLAG_UPDATE_CURRENT); 
AlarmManager alarmManager = (AlarmManager)getSystemService(getApplicationContext().ALARM_SERVICE); 

Calendar calendar = Calendar.getInstance(); 
calendar.setTimeInMillis(System.currentTimeMillis()); 
calendar.set(Calendar.HOUR_OF_DAY, hour); 
calendar.set(Calendar.MINUTE, minute); 
calendar.set(Calendar.DAY_OF_WEEK,2); 

alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(),AlarmManager.INTERVAL_DAY * 7, pendingIntent); 

heute ist Sonntag, also ist die Tageszahl 1 und ich schrieb calendar.set (Calendar.DAY_OF_WEEK, 2); und der alarm wurde gerade trigered, da ich die zeit und die minute dieses moments benutzt habe ... es ist egal ob ich die tagnummer 1 2 3 4 5 oder 6 setze oder wenn ich mehrere alarm manager mit gleicher identifikation mache und jede andere enthält Tag löst es jeden Tag aus

Antwort

1

Warum ist diese Linie notwendig?

calendar.setTimeInMillis(System.currentTimeMillis()); 

Auch die Android-Entwicklung documentation empfiehlt

setInexactRepeating(int type, long triggerAtMillis, long intervalMillis, PendingIntent operation); 

EDIT: Ich vermute, dass es die Absicht, nicht für die Erstellung von Alarmen festgelegt ist, damit es nicht die Alarme korrekt zu schaffen ist. Vielleicht wäre diese Arbeit:

Intent intent = new Intent(this, AlarmReceiver.class); 
PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 0, 
intent, PendingIntent.FLAG_ONE_SHOT); 

AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE); 
//set repeating alarm here 

Ich hoffe, dass die Frage beantwortet.

+0

funktioniert es doesnot i den Alarm Tag auf 3 und die Anzahl von heute ist 1 und es nur ausgelöst. Ich habe die Dinge geändert, wie Sie sagten – uplnypan

+0

@uplnypan Haben Sie eine Lösung gefunden? – ItamarG3

+0

Nein, ich bin traurig ... Ich habe keine Ahnung, was falsch ist, ich möchte den Alarm nur für die angegebene Uhrzeit und den Wochentag wiederholen, bis der Alarm gelöscht wird. – uplnypan

0

Also okay, ich habe dies gelöst, für alle, die eine Alarmanwendung wie folgt erstellen möchten> Sie stellen die Uhrzeit und die Wochentage ein, um den Alarm auszulösen, es funktioniert so: Wenn heute der Tag ist, der Sie choosed Sie einfach den Alarm mit diesem Satz:

calendar.set(Calendar.HOUR_OF_DAY, hour); 
calendar.set(Calendar.MINUTE, minute); 

aber wenn der Tag nicht der Tag abgeholt, die Sie heute haben Sie dann nur die zusätzliche Stunde eingestellt nahmen zum Zeitpunkt des nächsten Tages ist und Minute wie oben.

dies ist der einzige Weg, um es