2 Stimmen

Android kann nicht von URL lesen

Ich habe Probleme beim Lesen von Text aus einer Datei im Android-Arbeitsbereich mit der URL-Klasse. Ich erhalte eine NetworkOnMainThreadException. Der gleiche Code funktioniert auch außerhalb des Android-Arbeitsbereichs, also muss es ein Netzwerk- oder Berechtigungsproblem sein. Ich habe eine einfache Textdatei aus dem angegebenen Link generiert. Es scheint, dass es bei url.openStream fehlschlägt. Unten ist mein Code, gefolgt von meiner Manifestdatei (wo ich die uses-permissions Zeile bereits hinzugefügt habe).

  static public String[] barList()
{ 
   ArrayList<String> bars = new ArrayList<String>();
   try{
       URL url = new URL("****");
       BufferedReader br = new BufferedReader(new InputStreamReader(url.openStream()));
       String line = br.readLine();
       while(line != null)
       {
           bars.add(line);
           line = br.readLine();
       }
       br.close();
   }
   catch (IOException e) {
       e.printStackTrace();
   }
   return (String[])bars.toArray();
}

Hier ist die Manifestdatei.

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="aexp.explist">
<application>
    <activity android:name=".ExpList" android:label="ExpList">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
</application>
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
</manifest>

0voto

Snicolas Punkte 37333

Vielleicht ist Ihr Stream gezippt: GZIPInputStream schlägt mit IOException in Android 2.3 fehl, funktioniert aber in allen früheren Versionen einwandfrei?

Wenn Sie keinen gepufferten Eingabestrom verwenden, können Sie den Inhalt der Url lesen?

Außerdem verwende ich oft url.getContent und übertrage es auf einen Inputstream, und das funktioniert, ich bin nicht vertraut mit url.openStream.

Grüß Gott, Stéphane

0voto

jchristof Punkte 2682

Ihr Code läuft korrekt, ohne eine Ausnahme zu werfen, wenn ich es in und führen Sie es von meinem aktuellen Projekt einfügen. Ich bin Targeting sdk 4-8.

-2voto

Ich hoffe, das hilft :-)

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X