Internet permission auf ICS

  • Hallo Leute,


    ich habe mit der Programmierung von AndroidApps erst am Wochenende angefangen, daher verzeiht mir bitte, falls ich nicht gleich alle Informationen bereitstellen kann.
    Und zwar hab ich das Problem, dass bei Android 4.0.3 das App absürtzt sobald es das Recht zum Verbinden mit dem Internet braucht.
    Ich hab mir sogar ein Example runtergeladen um wirklich sicher zusein, dass es am Internet permission liegt.


    Der Examplecode:


    Was kommt? -


    LogCat:


    AndroidMainfest.xml


    Fehlerbeschreibung: Das App stürzt bei "in = InetAddress.getByName("google.at");" ab,

  • Hallo,


    das war leider nicht der Fehler, es stüzt immernoch ab.
    Auf ICS stürzt mein App was ich gecoded hab, das hat zwar nix mit Ping zu tun, aber es braucht auch eine Inernetverbindung, kurzer Schnipsel:


    Code
    URL url = new URL("http://meineurl.tld/api.php?username="+usernameField.getText().toString()+"&password="+password);
    		    	BufferedReader reader = null;
    		    	reader = new BufferedReader(new InputStreamReader(url.openStream()));


    Sobald die dritte Zeile aufgerufen wird, schmiert das Programm ab.

  • Hi Grex,


    ich vermutet mal es ist das gleiche Problem wie es schon ein paar mal hier im Forum besprochen wurde.
    kapsel das "lesen" der URL in einen seperaten Thread.
    Wenn du das nicht machst, blockiert der Main Thread und Android wirft eine Exception.


    Sollte das nicht den Fehler beheben wäre nicht schlecht wenn du die Fehlermeldung posten würdest.


    Mfg Titus

  • Hallo,


    zugegeben ich bin nicht der perfekte programmierer in Java, ich hatte Java damals in der Schule aber das ist ja doch wieder 4 Jahre her ;)
    Ich bin eher mit anderne Programmiersprachen vertraut. Aber jetzt jetzt zum Thema.
    Was meinst du mit einem seperaten Thread? - bzw. wie stell ich das an? - habs jetzt mal in einer eigenen Funktion gespielen, mit return, hier der Code:


    Es funktioniert auch mit 127.0.0.1 nicht, und mit der SDK von 2.3.3 auf einem Android Handy mit 2.3.4 klappt es fein.


    EDIT:
    Log:

  • Hi Grex,


    Zitat

    Was meinst du mit einem seperaten Thread?


    Weißt du nicht was Thread sind oder weißt du nicht wir du es anstellen sollst? Weil der Code den du gepostet hast hat nix mit Threads zu tun.


    Falls ersteres zutrifft:
    Einfach ausgedrückt ermöglichen Threads eine Parallelität zu erzeugen. Also in deinem Fall würde das bedeuten das der Main-Thread(baut das auf was auf dem Bildschirm zu sehen ist) weiter läuft und parallel dazu die Daten von deiner URL geladen werden. Machst du das nicht muss der Main-Thread warten bis die Daten geladen sind.


    Falls es dich interessiert ein paar Links:
    Threads Wikipedia
    Threads in Java


    Falls zweitens zutrifft:
    Android enthält für sowas die Klasse AsynTask.
    Sollte sie für dein Problem nicht passen kannst auch einen eigenen Thread implementieren(wie das geht siehe Threads in Java.


    Auch hier noch einen Link zusatz:
    Threads in Android


    Zitat

    und mit der SDK von 2.3.3 auf einem Android Handy mit 2.3.4 klappt es fein.


    Ich vermute das liegt daran das bei Android Versionen die kleiner als 4.0 sind, das OS nicht so darauf geachtet hat ob du die Internetverbindung in einen separaten Thread kapselst. Aber auch dort sollte man diesen Weg gehen, da der User sonst einen Dialog angezeigt bekommt der ihn darauf schließen lassen könnte, dass die Anwendung abgeschmiert ist.
    Und das ist ja nun auch nicht die feine englische Art.


    mfg Titus

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!