Suche eine Webseite mit dem aktuelle Datum in XML

Meri

Mitglied
Hallo zusammen,
ich bin verzweifelt dran in einer Android App das aktuelle Datum zu ermitteln und zwar nicht das System Datum, sondern von einer Webseite z.b. in XML.
Das System Datum kann ich nicht nehmen, da mir damit sonst der Benutzer über das umstellen des Datums, diesen Wert manipulieren kann, deshalb brauche ich sie aus dem Internet z.b. von einer Webseite, welche mir das Aktuelle Datum im XML-Format zur verfügung stellt.
Vorgestellt habe ich es mir entweder so das ich das XML einer Seite runterlade, welches das Datum enthält, und dieses dann Parse und daraus dann somit das Datum auslese, aber dazu finde ich keine Seite, welche mir das so zur Verfügung stellt. Erst dachte ich mit folgende wäre es eine Option (http://exslt.org/date/functions/date-time/index.html), aber dort finde ich das Datum leider doch nicht.
Alternativ hab ich es über einen NTPServer versucht es mir abzufragen, mit folgendem Code:
Code:
SntpClient client = new SntpClient();
if (client.requestTime("time.foo.com")) {
    long now = client.getNtpTime() + SystemClock.elapsedRealtime() -
    client.getNtpTimeReference();
    Date current = new Date(now);
    Log.i("NTP tag", current.toString());
}
von diesem Beitrag:
http://stackoverflow.com/questions/16787240/android-getting-the-date-and-time-from-a-ntp-server

Aber auch das hat leider nicht klappt da zum einen der angegebene NTPServer nicht funktioniert aber auch mit anderen es nicht klappt.

Kann mir hierzu irgendjemand weiterhelfen?
Das wäre sehr super wenn sich jemand kurz zeit dazu nehmen würde mir zu helfen!
 

Thallius

Top Contributor
Ich denke dein Konzept ist Quatsch.

Wahrscheinlich willst du über das Datum eine Testphase abfragen oder sowas. Dazu brauchst du nicht das aktuelle Datum. Oder sagen wir so: das aktuelle Datum hilft dir auch nicht.

Schreib doch einfach bei jedem Start das aktuelle Datum in eine Datei (natürlich verschlüsselt) da kann der User dann das System Datum zurück setzen wie er lustig ist. Wenn das Datum in deiner Datei größer ist als das System Datum, dann hat er gefuscht und deine Software startet nicht.

Allerdings rettet dich das nicht davor, dass der User deine App einfach komplett löscht und neu installiert. Das würde es eben aber auch nicht wenn du das Datum aus dem Internet holst.

Gruß

Claus
 

Meri

Mitglied
Schreib doch einfach bei jedem Start das aktuelle Datum in eine Datei (natürlich verschlüsselt) da kann der User dann das System Datum zurück setzen wie er lustig ist. Wenn das Datum in deiner Datei größer ist als das System Datum, dann hat er gefuscht und deine Software startet nicht.
Das klingt schon gut, aber wie bekomme ich das aktuelle Datum raus wen nicht vom System?

Und nein es handelt sich nicht um irgendwelche Testphasen sondern einen Adventakalender, bei dem verhindert werden soll das das Türchen von morgen geöffnet wird.

Deshalb die Frage wie umgehe ich das es der User einfach mit dem umstellen seiner Uhr austriksen kann?
 

Thallius

Top Contributor
Wenn du verhindern willst, dass die Uhrzeit in die Zukunft geändert wird, dann funktioniert mein System natürlich nicht. Sorry

Claus
 

Meri

Mitglied

kann ich mit der API informationen von der app aus im internet abrufen oder ist das ein extra Tool/Programm welches ich noch installieren müsste auf dem Gerät um die Zeit raus zu bekommen?
Hab es mir zwar angeschaut, aber komm damit noch nicht so ganz klar. Hast du mir da evtl. ein Beispiel wie ich das verwenden kann?


Wenn du verhindern willst, dass die Uhrzeit in die Zukunft geändert wird, dann funktioniert mein System natürlich nicht. Sorry

Claus
Trozdem Danke, dass du versucht hast mit weiter zu helfen.
 

InfectedBytes

Top Contributor
kann ich mit der API informationen von der app aus im internet abrufen oder ist das ein extra Tool/Programm welches ich noch installieren müsste auf dem Gerät um die Zeit raus zu bekommen?
Hab es mir zwar angeschaut, aber komm damit noch nicht so ganz klar. Hast du mir da evtl. ein Beispiel wie ich das verwenden kann?
Du musst nichts weiter tun als die Webseite aufzurufen. Für utc z.b.: http://www.timeapi.org/utc/now
 

InfectedBytes

Top Contributor
Erstmal brauchst du natürlich die Internet permission im manifest, ansonsten musst du aus Code Sicht einfach nur die Seite runterladen, z.B. mit der HttpClient Klasse
 

Meri

Mitglied
Also ich hab das jetzt versucht mit dem
Java:
HttpClient client = new DefaultHttpClient();
aber das klappt leider noch nicht und bei der Recherche danach stoß ich auf die Info das es erst ab SDK 8 geht, welche es aber für Android noch garnicht gibt, sondern erst bis 7.1.

Hat jemand noch eien andere lösung diese HTTP anfrage zu machen bei einer App, ab besten solte es bei Android 4.1 schon umsetzbar sein.
 

InfectedBytes

Top Contributor
Also ich hab das jetzt versucht mit dem
Java:
HttpClient client = new DefaultHttpClient();
aber das klappt leider noch nicht und bei der Recherche danach stoß ich auf die Info das es erst ab SDK 8 geht, welche es aber für Android noch garnicht gibt, sondern erst bis 7.1.
Das gibt es seit API Version 1...
https://developer.android.com/reference/org/apache/http/client/HttpClient.html

edit:
Schreib am besten mal was du denn versucht hast
 

Meri

Mitglied
also mit der HttpClient klasse hat es garnicht funktioniert schon nur die zeile
HttpClient client = new DefaultHttpClient(); in den code einzufügen ging nicht, also verlangte nach dem ich den "insert API indexing api code " hinzugefügt hab, nach einer höheren API.
Und das wäre der ganze code mit welchem ich mit der Zeile noch weiter machen wolte, wenn es geklappt hatte:
Java:
  HttpClient client = new DefaultHttpClient();
        HttpGet request = new HttpGet("http://www.test.com");
        HttpResponse response = client.execute(request);

// Get the response
        BufferedReader bufferedReader = new BufferedReader
                (new InputStreamReader(
                        response.getEntity().getContent()));

        String line = "";
        while ((line = bufferedReader.readLine()) != null) {
            textView.append(line);
        }
    }catch (Exception e)
    {
        e.toString();
    }
Er lasst mich nicht mal folgenden import machen:

import org.apache.http.client.HttpClient;
import org.apache.http.HttpResponse;

Und dann hab ich jetzt noch mit einer anderen alternative es probiert
Code:
        HttpURLConnection httpURLConnection = null;
        BufferedReader bufferedReader = null;

        String daten = "";

        try {
            URL url = new URL( "http://www.timeapi.org/utc/now");

             httpURLConnection = (HttpURLConnection) url.openConnection();

            InputStream inputStream = httpURLConnection.getInputStream();

            bufferedReader = new BufferedReader(new InputStreamReader(inputStream));

           daten =
bufferedReader.readLine();
welche aber auch noch nicht will also bei dem inputStream eine fehlermeldung bringt, und zwar folgende:
android.os.NetworkOnMainThreadException
 
Zuletzt bearbeitet:

InfectedBytes

Top Contributor
Auch wenn man keine Ahnung von einer Fehlermeldung hat, ist der erste Schritt diese zu googlen und schon weiß man was los ist und wie man es beheben kann.

Hier trotzdem mal die Kurzfassung:
Daten innerhalb des UI threads runterzuladen ist eine ziemlich dumme Idee, da dadurch die UI für die Dauer des Downloads einfriert. Um dem vorzubeugen erlaubt Android es einfach nicht und wirft eine Exception.
Lösung: Den Download einfach in einem separaten Thread durchführen
 

Meri

Mitglied
Ich hatte es bereits gegoogelt aber nicht wirklich was gefunden.
Danke das du mir doch noch ein Tipp gegeben hast.
Ich werde es morgen ausprobieren.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
AllBlack Suche Programmierer in Java und Kotlin mit dem ich mich Selbstständig machen kann Android & Cross-Platform Mobile Apps 23
AllBlack Auf der Suche nach einem App-Entwickler Android & Cross-Platform Mobile Apps 1
M Barrierefreie Appentwicklung für Android - Suche Codebeispiele Android & Cross-Platform Mobile Apps 8
J Android Suche in einer ListView Android & Cross-Platform Mobile Apps 3
M Android Suche Activity/View Namen Android & Cross-Platform Mobile Apps 1
M Suche Name von View Komponente Android & Cross-Platform Mobile Apps 10
E Java ME Suche aufgenommene Datei Android & Cross-Platform Mobile Apps 4
K suche nach der richtigen dokumentationh Android & Cross-Platform Mobile Apps 2
F Suche ME Beschreibung Android & Cross-Platform Mobile Apps 2
B Suche Klassenbeschreibungen und Bluetoothfunktionen. Android & Cross-Platform Mobile Apps 3
F Suche Javaspiele - Programmierer! Android & Cross-Platform Mobile Apps 5
T [Suche:] DECT-Mobiltelefon mit Javaunterstützung Android & Cross-Platform Mobile Apps 2
L Android Wie erstelle ich eine dynamische Tabelle (TableLayout)? Android & Cross-Platform Mobile Apps 2
W Zur Laufzeit erstelltes MenuItem an eine View binden Android & Cross-Platform Mobile Apps 1
J Android Zugriff auf eine Datei, diese von einer anderen App erstellt wurde? Android & Cross-Platform Mobile Apps 11
W Pixel Farbe in eine andere Farbe ändern im ImageView von ein Icon Android & Cross-Platform Mobile Apps 14
S Sinnvollste weg eine SQLite DB mit Android auslesen Android & Cross-Platform Mobile Apps 7
L Regelmäßig eine Methode im Hintergund ausführen Android & Cross-Platform Mobile Apps 1
J Android Wann ist eine App privat? Android & Cross-Platform Mobile Apps 10
M Android Schreiben von JsonDaten in eine SqliteDB Android & Cross-Platform Mobile Apps 7
R Android Eine Website-frame in einer App Android & Cross-Platform Mobile Apps 4
Robat Android Wie mache ich eine App mit verschiedenen Leveln? Android & Cross-Platform Mobile Apps 8
M [Android] Wie erstellt man eine Verknüpfung eines Ordners? Android & Cross-Platform Mobile Apps 7
R [ANDROID] Dynamisch eine Liste erweitern Android & Cross-Platform Mobile Apps 3
K Verständisfrage bzgl. Buttons und ihnen eine Funktion geben. Android & Cross-Platform Mobile Apps 3
X Android Wo gibts eine SortableListView? Android & Cross-Platform Mobile Apps 6
G eine Methode einer anderen Activity aufrufen Android & Cross-Platform Mobile Apps 9
S Android In Service überprüfen ob eine Activity gebunden ist? Android & Cross-Platform Mobile Apps 6
B TableLayout verhält sich nicht wie eine Tabelle Android & Cross-Platform Mobile Apps 3
L Android Eine Kleinigkeit für Profis Android & Cross-Platform Mobile Apps 2
A Android Eine Datei in Android löschen, aber wie ? Android & Cross-Platform Mobile Apps 24
A Koordinaten eine Images feststellen Android & Cross-Platform Mobile Apps 9
U [Android] Eine Datei aus Jar-Archiv laden Android & Cross-Platform Mobile Apps 4
N Gibt es eine opensource Speech-to-Text engine? Android & Cross-Platform Mobile Apps 3
B Android Eine Warnung in der Console (Eclipse) auswerten Android & Cross-Platform Mobile Apps 3
T Android Ergebnis eines XML+XSLT "transform" in eine HTML - Datei schreiben (Android) Android & Cross-Platform Mobile Apps 2
M Eclipse: cdc.jar in eine Midlet Suite integrieren Android & Cross-Platform Mobile Apps 18
L SecurityException beim lesen/schreiben eine Datei Android & Cross-Platform Mobile Apps 7
H Gibt es eine Alternative zur Location API? Android & Cross-Platform Mobile Apps 4
F Wie komplex wäre eine Wecker-Applikation? Android & Cross-Platform Mobile Apps 5
L Android Daten von Webseite runterladen, die mit HTTP-Authentifizierung gesichert ist Android & Cross-Platform Mobile Apps 5

Ähnliche Java Themen

Neue Themen


Oben