Android, читать контент с URL в 3.1? - PullRequest
0 голосов
/ 03 февраля 2012

У меня есть эта функция, которая прекрасно работает в 2.3, но не работает в 3.1

Есть идеи?

public static String readUrl( String url2 ){
    String str = "";
    try {
        // Create a URL for the desired page
        URL url = new URL( url2 );

        // Read all the text returned by the server
        BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream()));
        str = in.readLine();
        in.close();
    } catch (MalformedURLException e) {
    } catch (IOException e) {
    }
    return str;
}

02-02 21: 58: 09.100: E / AndroidRuntime (30937): ИСКЛЮЧИТЕЛЬНОЕ ИСКЛЮЧЕНИЕ: основное 02-02 21: 58: 09.100: E / AndroidRuntime (30937): android.os.NetworkOnMainThreadException 02-02 21: 58: 09.100: E / AndroidRuntime (30937): на android.os.StrictMode $ AndroidBlockGuardPolicy.onNetwork (StrictMode.java:1077) 02-02 21: 58: 09.100: E / AndroidRuntime (30937): на java.net.InetAddress.lookupHostByName (InetAddress.java:477) 02-02 21: 58: 09.100: E / AndroidRuntime (30937): на java.net.InetAddress.getAllByNameImpl (InetAddress.java:277) 02-02 21: 58: 09.100: E / AndroidRuntime (30937): на java.net.InetAddress.getAllByName (InetAddress.java:249) 02-02 21: 58: 09.100: E / AndroidRuntime (30937): в org.apache.harmony.luni.internal.net.www.protocol.http.HttpConnection. (HttpConnection.java:69) 02-02 21: 58: 09.100: E / AndroidRuntime (30937): в org.apache.harmony.luni.internal.net.www.protocol.http.HttpConnection. (HttpConnection.java:48) 02-02 21: 58: 09.100: E / AndroidRuntime (30937): на org.apache.harmony.luni.internal.net.www.protocol.http.HttpConnection $ Address.connect (HttpConnection.java:304) 02-02 21: 58: 09.100: E / AndroidRuntime (30937): на org.apache.harmony.luni.internal.net.www.protocol.http.HttpConnectionPool.get (HttpConnectionPool.java:89) 02-02 21: 58: 09.100: E / AndroidRuntime (30937): в org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnectionImpl.getHttpConnection (HttpURLConnectionImpl.java:292) 02-02 21: 58: 09.100: E / AndroidRuntime (30937): на org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnectionImpl.makeConnection (HttpURLConnectionImpl.java:274) 02-02 21: 58: 09.100: E / AndroidRuntime (30937): на org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnectionImpl.retrieveResponse (HttpURLConnectionImpl.java:1038) 02-02 21: 58: 09.100: E / AndroidRuntime (30937): в org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnectionImpl.getInputStream (HttpURLConnectionImpl.java:523) 02-02 21: 58: 09.100: E / AndroidRuntime (30937): на java.net.URL.openStream (URL.java:645)

1 Ответ

2 голосов
/ 03 февраля 2012

Начиная с Honeycomb, вы должны выполнять сетевые операции асинхронно (НЕ в UI-потоке).Например, вы можете использовать AsyncTask.Подробнее об асинхронных операциях можно найти здесь: http://developer.android.com/resources/articles/painless-threading.html

Если вы выполняете сетевые операции асинхронно, ваш интерфейс будет более отзывчивым и вы не рискуете вызвать диалог ANR.1009 *

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...