[App] Eigener Stundenplaner

  • Antworten:75
  • OffenNicht stickyNicht beantwortet
Gelöschter Account
  • Forum-Beiträge: 33

28.02.2013 15:41:29 via Website

Hi an euch alle :)
Ich heiße Patric und versuche mich gerade daran mir für unsere Uni eine App zu erstellen, die mir meinen Stundenplan darstellt.
Programmierfähigkeiten hab ich hauptsächlich mit C++ und einige Grunderfahrung in Java.
Was ich mir bisher zur App überlegt habe:
Ich möchte die Informationen (also Datum, Uhrzeit, Vorlesungsname) von der Seite parsen( muss natürlich vorher eingelogt sein) und diese dann in einer XML-Datei speichern.
Diese Datei will ich dann wieder auslesen und die Informationen dann in einem passenden Layout darstellen.
Was bisher Fragen aufwirft:
Wie realisiere ich das am besten mit dem Login auf unserer Uni-Seite?
Ist es besser(einfacher) die Informationen zu parsen oder sie mit Hilfe von regular Expressions auszulesen?
Wie erstelle ich am besten so eine XML-Datei?

Bin ich mit diesen Überlegungen auf dem richtigen Weg oder befinde ich mich da total auf dem Holzweg?

— geändert am 28.02.2013 15:42:18

Pascal P.
  • Mod
  • Blogger
  • Forum-Beiträge: 9.207

28.02.2013 18:02:29 via Website

1. Also den Login musst du schauen, weis ja net welche Uni Seite du meinst. Ich weiß, wie man so nen Login auf externen Seiten macht. Poste am besten mal die Url.

2. Die Seite Parsen kannst du immer, im HTML Quellcode musst du dann halt nach bestimmten Schlüsselworten suchen.
Mit Regular Expressions habe ich keine ahnung.

3. Am besten du versuchst erst einmal die Daten zu holen und zu Parsen. Wozu brauchst du denn die XML doch nur zum Speichern oder?
Das kannst aber musst du nicht mit einer XML Datei machen. Zummanderen ist das ERstellen einer XML aufüandig.
Bei Frgen stelle sie einfach hier.

LG Pascal //It's not a bug, it's a feature. :) ;)

Gelöschter Account
  • Forum-Beiträge: 33

04.03.2013 10:18:47 via Website

Erst mal Danke für deine Hilfe :)
Ja die XML-Datei wäre nur zum Speichern der Daten gewesen.
Was wäre den eine gute Alternative anstatt der XML-Datei?
Noch eine andere Frage:
Der Login funktioniert wie üblich über Benutzername und Passwort, nur soll die der User nicht jedesmal eingeben müssen,
sondern sie sollen beim Start der App schon in den Textfeldern stehen. Wie könnte ich das am besten regeln?

— geändert am 04.03.2013 10:22:35

  • Forum-Beiträge: 307

04.03.2013 11:13:40 via Website

Hi Patric,


Was wäre den eine gute Alternative anstatt der XML-Datei?
Wie wär es mit na Datenbank?
Eine Übersicht der "Speichermöglichkeiten": Storage Options


Der Login funktioniert wie üblich über Benutzername und Passwort, nur soll die der User nicht jedesmal eingeben müssen,
sondern sie sollen beim Start der App schon in den Textfeldern stehen. Wie könnte ich das am besten regeln?
Na beim ersten Start speicherst du die Eingabe und bei jedem weiteren Start lädst du sie aus dem Speicher und schreibst die Daten in die Textfelder.

Mfg Christian

www.apps-mit-web.de

Pascal P.
  • Mod
  • Blogger
  • Forum-Beiträge: 9.207

04.03.2013 13:27:54 via App

Du kannst ein HTTP Post mit den Login Daten machen. Zum speichern von Daten kannst du SharedPreference benutzen.

LG Pascal //It's not a bug, it's a feature. :) ;)

Gelöschter Account
  • Forum-Beiträge: 33

06.03.2013 10:06:03 via Website

Danke das mit den Shared Preferences ist genau das was ich gesucht hab :)
Gelöschter Account
  • Forum-Beiträge: 33

07.03.2013 15:08:10 via Website

Mir hat sich mal wieder eine neue Frage aufgetan bei der ich eure Hilfe gebrauchen kann.
Das mit den sharedpreferences und mit dem Login hab ich denke ich soweit erledigt.
Was ich mich frage, bzw nicht weiß wie ich es realisieren könnte ist folgendes:
Ich versuche es mal zu beschreiben.
Nachdem man sich auf der Seite unserer Uni eingeloggt hat, wählt man im Menü einen Punkt(Link) aus, worauf man eine Liste der anstehenden
Termine(also die Vorlesungen) erhält. Diese möchte ich dann parsen.

Wie könnte ich es in meiner App realisieren, dass, nachdem ich den Button zum Senden der Login-Daten gedrückt habe, mir der zweite Link, unter dem die Vorlesungen stehen, ausgewählt wird und ich die Infos parsen kann. Bzw. wie mache es, das dies alles im Hintergrund abläuft?
Was ich mir vorgestellt hatte ist, dass ich einfach auf den Button klicke, im Hintergrund alles abläuft und mir dann in einer Zweiten Activity der fertige Stundenplan angezeigt wird. Kann das so funktionieren oder gehe ich das falsch an?
  • Forum-Beiträge: 1.793

07.03.2013 15:17:41 via App

Ich denke mal, du hast einen separaten Thread, der dich in die Uni-Seite eingeloggt, da es sonst eine NetworkOnMainThreadException gibt. Also mache es so, das in diesen Thread nach dem Login der zweite link aufgerufen wird.

Am besten solltest du den Stundenplan nicht als HTML, sondern als JSON ausgegeben. Dann müsstest du aber auf dem Uni-Server eine neue PHP- Seite anlegen.

Gruß

— geändert am 07.03.2013 15:20:17

Liebe Grüße impjor.

Für ein gutes Miteinander: Unsere Regeln
Apps für jeden Einsatzzweck
Stellt eure App vor!

Pascal P.
  • Mod
  • Blogger
  • Forum-Beiträge: 9.207

07.03.2013 18:44:29 via Website

Du musst die URL prüfen,ob auf "Links" gedrückt wurde.
Dann die HTML einlesen und den Inhalt Schritt für Schritt parsen.
Um das ganze im Hintergrund laufen zu lassen nutzt du einen extra Thread.

PS: Wie machst du das mit dem Login - würdem ich mal interessieren.

LG Pascal //It's not a bug, it's a feature. :) ;)

Gelöschter Account
  • Forum-Beiträge: 33

08.03.2013 20:59:06 via Website

@Imjor: Danke für den Tipp. Die Sache ist allerdings das ich am Uniserver keine neue PHP-Seite anlegen kann ,da ich dazu keine Berechtigung habe. Ich muss die Daten aus dem HMTL-Code parsen :(
@Pascal: Da bin ich mir noch nicht so ganz sicher. Was ich mir überlegt habe, das ich in den Link zum Einloggen meinen Benutzernamen und dass Passwort einsetze und den Link dann aufrufe. Danach dann das Parsen von der Seite

— geändert am 08.03.2013 21:03:53

Pascal P.
  • Mod
  • Blogger
  • Forum-Beiträge: 9.207

08.03.2013 21:54:10 via Website

Ich würde dir immer noch den Weg per HTTP Post empfelen.
Dann denkt die Seite,du hättest dich normal im Web Browser angemeldet.

LG Pascal //It's not a bug, it's a feature. :) ;)

Pascal P.
  • Mod
  • Blogger
  • Forum-Beiträge: 9.207

08.03.2013 22:20:43 via Website

Habe auch schon in Java eine HTML geparst, aber nicht mit einem XML parser (warscheinlich die einfachste Lösung)
sondern ich habe die HTML Seite eingelesen und dann immer nach bestimmten Schlüsselwörtern gesucht. Duch einen Substring kommt man dann auch schnell zum Ziel.
Aber würde einen XML Parser empfelen, obwohl der Code dafür am Anfang noch nict leicht zu verstehen ist. (war bei mir jedenfalls so.)

LG Pascal //It's not a bug, it's a feature. :) ;)

Gelöschter Account
  • Forum-Beiträge: 33

13.03.2013 13:44:15 via Website

So mal wieder Vielen Dank für eure Tipps.
Ich hab jetzt einfach mal versucht den Link in einem WebView zu öffnen, nur funktioniert das nicht.
Es erscheint die Fehlermeldeung "Web page not available".
Kann das was mit dem "https" zu tun haben?
Pascal P.
  • Mod
  • Blogger
  • Forum-Beiträge: 9.207

14.03.2013 15:37:41 via Website

Kann das vlt. daran liegen, dass sich die URL ständig ändert, oder dass du in der WebView nicht angemeldet bist?
HTTPs hat normalerweise nichts damit zu tun.

— geändert am 14.03.2013 15:38:15

LG Pascal //It's not a bug, it's a feature. :) ;)

Gelöschter Account
  • Forum-Beiträge: 33

19.03.2013 17:57:29 via Website

Also wenn ich den Link mit Firefox auf meinem Rechner öffne wird mir die Seite direkt angezeigt.
Wie meinst du das, dass ich nicht im WebView angemeldet bin?
Pascal P.
  • Mod
  • Blogger
  • Forum-Beiträge: 9.207

19.03.2013 20:57:40 via App

Das liegt vlt. daran, dass du im Firefox schon auf der Seite automatisch schon angemeldet bist.
Versuch es mal mit nem anderen Browser, aber du darfst davor dich nicht anmelden.
Wenn dann die gleiche Fehlermeldung kommt, dann heißt das, dass der WebBrowser in deiner App keine Cookies oder Sessions speichert.

Edit: Mit nicht in der WebView angemeldet meine ich,dass du den Authentifizierungsvorgang auf der Webseite nicht ordnungsgemäß ausgeführt hast.

— geändert am 19.03.2013 21:00:01

LG Pascal //It's not a bug, it's a feature. :) ;)

Gelöschter Account
  • Forum-Beiträge: 33

25.03.2013 14:22:33 via Website

So das Problem hat sich erledigt, ich weiß nicht was ich gemacht habe, aber über den WebView kann ich mich jetzt auf der Seite anmelden.
Sprich mein Link funktioniert :)
Lediglich beim Aufruf des Links bekomme ich die Fehlermeldung, dass das Zertifikat abgelaufen sei, aber das sollte mich ja nicht stören, da ich den WebView ja nur zum Teste des Links benutzt habe. Der eigentliche Aufruf erfolgt ja im Hintergrund.
Nur wie bekomm ich das jetzt hin, nachdem ich mich erfolgreich eingeloggt habe, das dann der 2 link automatisch aufgerufen wird, unter dem ich die Liste der Veranstaltungen finde? Mir wird das einfach nich klar, hat da vll jmd ein kleines Codebespiel?
Bzw. wie kann ich das Prüfen das der Login erfolgreich war?

— geändert am 25.03.2013 14:56:14

Pascal P.
  • Mod
  • Blogger
  • Forum-Beiträge: 9.207

25.03.2013 14:42:52 via App

Das kommt ganz darauf an, wie du deinen Login machst. Bitte poste mal den Code sonst kann ich dir nicht genau sagen, wie du das machen kannst.

LG Pascal //It's not a bug, it's a feature. :) ;)