Ankündigung

Einklappen
Keine Ankündigung bisher.

RM-Android-App (09062011)

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    RM-Android-App (09062011)

    Hier nun mal ein eigener Thread für das Thema. Hier werde ich Fortschritte bekannt geben oder mal schreiben, woran ich gerade hänge. Vielleicht finden sich ja einige, die bereits damit Erfahrung haben und mir bei dem ein oder anderen Problem helfen können. Ebenfalls werde ich dann zu gegebener Zeit hier nach Testern fragen ;)

    Die App soll vorerst für das Forum da sein, was man nachher alles draus machen kann, wird sich zeigen.

    Ist meine erste App für Android, daher muss ich mich damit erstmal zurecht finden ;)

    Hier mal ein Post zu dem derzeitigen Stand:

    Login Problem [GELÖST]
    DerKiLLa postete
    Hat keinen Sinn, ich bekomme keinen Login via Email+PW hin, egal wie ich es versuche, da ist einfach nix zu machen. Daher seh ich leider auch schwarz für die App ...

    Hab einiges nun getestet, nix hat funktioniert und daher hab ich wenig Lust weiterzumachen, wenn man absolut keinen Anhaltspunkt hat, an was es liegen könnte.

    Spoiler: 
    URLConnection connection = new URL("http://www.readmore.de/index.php?cont=login").openConnection();
    connection.setDoOutput(true);

    String content =
    "email=" + URLEncoder.encode (email) +
    "&password=" + URLEncoder.encode (password) +
    "&cookie=" + URLEncoder.encode ("true") +
    "&login=" + URLEncoder.encode ("Anmelden");
    connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
    connection.setRequestProperty("Content-Length", "" + content.getBytes().length + "");

    OutputStream output = connection.getOutputStream();
    output.write(content.getBytes());
    InputStream stream = connection.getInputStream();
    connection.connect();
    output.close();

    Diese Möglichkei geht genausowenig wie die andere. Ob es an RM liegt kann ich im Moment net sagen, jedoch schreiben unzählige dass genau diese Funktionen funktionieren, daher denke ich einfach mal, dass es an RM liegt.

    Die Daten hinter "content" sind übrigens exakt die gleichen, wie die, die normal bei einem Login via Browser gesendet werden und auch sonst hatte ich den Header bereits angepasst.
    Wenn ich ein Cookie-String übergebe, klappt der Login übrigens, aber dass ist keine Lösung.
    Spoiler: 


    Wenn es interessiert oder sich selber daran probieren möchte:
    Source

    Der Loginversuch ist unter:
    public void newList(String sBereich)
    else if (sBereich == "Offtopic") {


    Features:
    [x] Loginfunktion
    [x] Loginbildschirm
    [x] Navigation durch Forenbereiche
    [x] ForenID speichern für Threadauflistung
    [x] Beiträge posten
    [x] Menu bauen
    [ ] Neue Nachrichten anzeigen
    [x] Design (Farben/Icons)
    [x] Quoten / Editieren
    [ ] Lesezeichen
    [ ] Zuletzt aktive Threads
    [x] Ticker
    [x] Tippen
    [ ] Matchinfos
    [ ] News anzeigen


    #2
    Macht doch ein Github Projekt auf, dann könnt ihr zusammen programmieren.
    Würde euch für die App-Programmierung Titanium Appcelerator empfehlen. Damit kann man in javascript native Apps schreiben. Ist relativ einfach, wenn man sich eher mit Web-, als mit Java-Programmierung auskennt. Wir nutzen das im Moment und es hat mich gerade mal einen Tag gekostet, mich in die Syntax und die API einzuarbeiten. Kann es nur empfehlen!
    Würde dann in Aptana 2 programmieren oder das Aptana Plugin für Eclipse nutzen, denn dafür gibt es auch eine Autovervollständigung von Appcelerator.
    Mit dem Titanium Developer legt ihr ein Projekt an, importiert es in Aptana 2 und Aptana 3, programmiert in Aptana 2 und mit Aptana 3 macht ihr Commits und pusht es in Github hoch, da es da sehr einfach geht. Leider gibt es für Aptana 3 noch nicht die Autovervollständigung, deshalb zwei Tools nutzen. Denn in Aptana 2 kann man nicht committen und pushen.
    Klingt etwas kompliziert, aber hat man es mal eingerichtet, ist es ganz easy. Bei Fragen wie man Github einrichtet, einfach nochmal hier im Thread nachfragen. Würde dann dazu ggf. noch eine kleine Anleitung schreiben.

    Kommentar


      #3
      Programmierenn ist wohl am einfachsten mit Eclipse und den dazugehörigen Android-Addons. Da hat man bereits alles für Android eingebaut ;)

      Prinzipiell will ich das App schon selber schreiben und ansonsten kann man sich bei diesem Projekt wohl auch ganz gut abstimmen, fall nötig.

      Dennoch danke für den Vorschlag ;)

      Kommentar


        #4
        DerKiLLa postete
        Was hat funktioniert? Der Login oder allgemein der Code? Würde mich sehr wundern ;)
        ausgabe des html codes nach dem login, aber hatte es auch nur 2 mal gemacht, werde heute mal memm laapi wieder für android einrichten, dann kann ich es mir mal richtig angucken

        Kommentar


          #5
          ich wünsch euch auf jeden fall viel glück und freue mich auf das endprodukt^^

          Kommentar


            #6
            wird sofort aufs desire installiert!!!

            Kommentar


              #7
              need auch für iphone x)

              Kommentar


                #8
                Hubschrauber postete
                need auch für iphone x)


                tja, dazu sag ich nichts :D

                Kommentar


                  #9
                  Wäre ne geile nummer sone app

                  Kommentar


                    #10
                    spacedoxa postete
                    ich wünsch euch auf jeden fall viel glück und freue mich auf das endprodukt^^
                    Same! Viel Glück!

                    Kommentar


                      #11
                      also ohne den login code wirds wohl nicht weiter gehen

                      gibts auf rm noch ne andere möglichkeit sich anzeigen zu lassen ob an eingelogt ist? könnte auch sein das der tolle neue rmcontainer bissel langsam is und man doch eingeloggt ist? außerdem habe ich irgendwann mal gelesen das es dabei probs mit firewalls geben kann(router und so)

                      Kommentar


                        #12
                        DerKiLLa postete
                        Programmierenn ist wohl am einfachsten mit Eclipse und den dazugehörigen Android-Addons. Da hat man bereits alles für Android eingebaut ;)

                        Prinzipiell will ich das App schon selber schreiben und ansonsten kann man sich bei diesem Projekt wohl auch ganz gut abstimmen, fall nötig.

                        Dennoch danke für den Vorschlag ;)
                        Nichtsdestotrotz programmierst Du dann die Android-App in Java. Und das ist bei Titanium Appcelerator jedoch nicht der Fall. Da programmierst Du in Javascript.
                        Die IDE ist da nicht der Unterschied, da du Appcelerator wie ich ansprach auch in Eclipse programmieren kannst.
                        Wenn Du Java kannst und genug Zeit hast, kannst Du natürlich auch über den normalen Weg die App programmieren. War nur ein Gedanke von mir. ;-)

                        Kommentar


                          #13
                          hassan postete
                          also ohne den login code wirds wohl nicht weiter gehen

                          gibts auf rm noch ne andere möglichkeit sich anzeigen zu lassen ob an eingelogt ist? könnte auch sein das der tolle neue rmcontainer bissel langsam is und man doch eingeloggt ist? außerdem habe ich irgendwann mal gelesen das es dabei probs mit firewalls geben kann(router und so)
                          Hab einen neuen Lösungsansatz, kann ich aber erst morgen testen.
                          Geht darum, dass man dann erstmal auf die Startseite geht, damit man ein Cookie hat und dann den Rest macht.
                          Am rmcontainer liegt es mMn nicht, da der Login per Cookie ja problemlos geht.

                          Kommentar


                            #14
                            Update:
                            Hab es getestet und funktioniert leider auch nicht ...

                            Spoiler: 
                            try {
                            BasicCookieStore cookieStore;
                            BasicHttpContext httpContext;
                            DefaultHttpClient httpClient;
                            cookieStore = new BasicCookieStore();
                            httpContext = new BasicHttpContext();
                            httpClient = new DefaultHttpClient();

                            if (cookieStore != null && httpContext != null) {
                            httpContext.setAttribute(ClientContext.COOKIE_STOR E, cookieStore);
                            if (httpClient != null) {
                            HttpGet httpActivity = new HttpGet("http://www.readmore.de/index.php");
                            HttpResponse httpResponseActivity = httpClient.execute(httpActivity, httpContext);
                            int statusActivity = httpResponseActivity.getStatusLine().getStatusCode ();
                            if (statusActivity == HttpStatus.SC_OK) {
                            HttpEntity httpEntityActivity = httpResponseActivity.getEntity();
                            if (httpEntityActivity != null) {
                            InputStream inputStreamActivity = httpEntityActivity.getContent();
                            try
                            {
                            HttpPost httpost = new HttpPost("http://www.readmore.de/index.php?cont=login");
                            httpResponseActivity = httpClient.execute(httpost, httpContext);
                            httpost.setHeader("Content-Type","application/x-www-form-urlencoded");
                            //httpost.setHeader("Content-length", "61");

                            List nvps = new ArrayList (4);
                            nvps.add(new BasicNameValuePair("email", email));
                            nvps.add(new BasicNameValuePair("password", password));
                            nvps.add(new BasicNameValuePair("cookie", "true"));
                            nvps.add(new BasicNameValuePair("login", "Anmelden"));
                            httpost.setEntity(new UrlEncodedFormEntity(nvps));

                            statusActivity = httpResponseActivity.getStatusLine().getStatusCode ();
                            if (statusActivity == HttpStatus.SC_OK) {
                            httpEntityActivity = httpResponseActivity.getEntity();
                            if (httpEntityActivity != null) {
                            inputStreamActivity = httpEntityActivity.getContent();
                            BufferedReader reader = new BufferedReader(new InputStreamReader(inputStreamActivity));
                            StringBuilder sb = new StringBuilder();
                            String line = null;

                            while ((line = reader.readLine()) != null) {
                            sb.append(line + "n");
                            }
                            // write html to System.out for debug
                            inputStreamActivity.close();

                            int iSuche = 0;
                            iSuche = sb.indexOf("myrmcontainer");
                            myString = myString + "nmyrmcontainer gefunden an Stelle " + iSuche + "n";
                            myString = myString + "n" + sb.toString().substring(iSuche);
                            }
                            }
                            } catch (IOException e) {

                            }
                            }
                            }
                            }
                            }

                            } catch (IOException e) {

                            }


                            Das ist der Code davon ... echt ärgerlich.

                            Kommentar


                              #15
                              ich probier mal ein wenig rum ;)
                              bin auch als tester dabei desire - leedroid :)

                              Kommentar

                              Lädt...
                              X