Ich habe eine Android-App, die einen Dienst hat, der eine Warnung basierend auf einer gewissen Zeit feuert.So erkennen Sie die Umstellung auf die Sommerzeit in Android
Das Problem ist, wenn die Zeitzone Änderungen (d.h .: Für einen Benutzer, Frankreich gelegen ist und geht von UTC + 1 bis UTC + 2). Die Anwendung wird nicht über diese Änderung benachrichtigt und löst daher die Warnung mit einer Verzögerung aus.
Ich habe überprüft bereits android TimeZone API und wissen, dass es einige Methoden gibt, die helfen können, wie:
IST ES MÖGLICH zu wissen, wann die Änderung eintritt, um sie in meinem Berechnungsalgorithmus zu berücksichtigen?
BTW: Ich habe schon viel von Blogs und Q/A von Stackoverflow, aber nicht helfen :(
EDIT (Manifest-Datei und der Empfänger-Klasse):
hier ist mein Manifest:
<receiver android:name=".receiver.NotificationReceiver">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
<action android:name="android.intent.action.TIMEZONE_CHANGED" />
<!--action android:name="android.intent.action.TIME_SET" /-->
</intent-filter>
</receiver>
Empfängerklasse:
public class NotificationReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
WakeLock.acquire(context);
Intent service = new Intent(context, NotificationService.class);
service.putExtras(intent);
context.startService(service);
// Timezone or time change
if (intent.getAction() != null
&& (intent.getAction().equals(Intent.ACTION_TIME_CHANGED)
|| intent.getAction().equals(Intent.ACTION_TIMEZONE_CHANGED)))
{
Intent i = new Intent(context, DialogPopUpTimeChange.class);
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(i);
}
}
}
Mögliche Duplikat [Datum und Uhrzeit ändern Hörer in Android?] (Http://stackoverflow.com/questions/5481386/date-and-time-change- listener-in-android) –
Nein, es ist kein Duplikat, weil ich bereits BroadcastReceiver verwendet habe, aber nicht geholfen hat. Ich möchte wissen, wann sich die Zeitzone ändert ** wird ** passieren –
Das hast du in deiner Frage nicht gesagt. Warum können Sie einen BroadcastReceiver nicht verwenden, um Ihren Alarm zu aktualisieren, wenn sich die Zeit ändert? –