java - Android:4.0 ICS 上奇怪的 openStream

标签 java android http inputstream

我尝试从 TextView 中显示的网站获取文本。

我使用:

try {
         textUrl = new URL("http://google.com");
         BufferedReader bufferReader = new BufferedReader(new InputStreamReader(textUrl.openStream()));
         String StringBuffer;
               String stringText = "";
         while ((StringBuffer = bufferReader.readLine()) != null) {
          stringText += StringBuffer;
         }
               bufferReader.close();

        } catch (MalformedURLException e) {

         e.printStackTrace();

        } catch (IOException e) {
         e.printStackTrace();

        }

如果我设置<uses-sdk android:targetSdkVersion>到 15 (ICS 4.0.3) 然后我的应用程序崩溃了。 如果我删除该行(我猜意味着目标是 1.6),那么它工作正常,但我的应用程序在我的手机上缩放很奇怪。

Logcat 只是告诉我它无法启动 Activity。

//皮尤实验室

日志:

03-21 17:12:42.874: E/AndroidRuntime(2101):     at android.widget.TabHost$IntentContentStrategy.getContentView(TabHost.java:703)
03-21 17:12:42.874: E/AndroidRuntime(2101):     at android.widget.TabHost.setCurrentTab(TabHost.java:350)
03-21 17:12:42.874: E/AndroidRuntime(2101):     at android.widget.TabHost$2.onTabSelectionChanged(TabHost.java:154)
03-21 17:12:42.874: E/AndroidRuntime(2101):     at android.widget.TabWidget$TabClickListener.onClick(TabWidget.java:540)
03-21 17:12:42.874: E/AndroidRuntime(2101):     at android.view.View.performClick(View.java:3549)
03-21 17:12:42.874: E/AndroidRuntime(2101):     at android.view.View$PerformClick.run(View.java:14400)
03-21 17:12:42.874: E/AndroidRuntime(2101):     at android.os.Handler.handleCallback(Handler.java:605)
03-21 17:12:42.874: E/AndroidRuntime(2101):     at android.os.Handler.dispatchMessage(Handler.java:92)
03-21 17:12:42.874: E/AndroidRuntime(2101):     at android.os.Looper.loop(Looper.java:154)
03-21 17:12:42.874: E/AndroidRuntime(2101):     at android.app.ActivityThread.main(ActivityThread.java:4944)
03-21 17:12:42.874: E/AndroidRuntime(2101):     at java.lang.reflect.Method.invokeNative(Native Method)
03-21 17:12:42.874: E/AndroidRuntime(2101):     at java.lang.reflect.Method.invoke(Method.java:511)
03-21 17:12:42.874: E/AndroidRuntime(2101):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
03-21 17:12:42.874: E/AndroidRuntime(2101):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
03-21 17:12:42.874: E/AndroidRuntime(2101):     at dalvik.system.NativeStart.main(Native Method)
03-21 17:12:42.874: E/AndroidRuntime(2101): Caused by: android.os.NetworkOnMainThreadException
03-21 17:12:42.874: E/AndroidRuntime(2101):     at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1178)
03-21 17:12:42.874: E/AndroidRuntime(2101):     at java.net.InetAddress.lookupHostByName(InetAddress.java:394)
03-21 17:12:42.874: E/AndroidRuntime(2101):     at java.net.InetAddress.getAllByNameImpl(InetAddress.java:245)
03-21 17:12:42.874: E/AndroidRuntime(2101):     at java.net.InetAddress.getAllByName(InetAddress.java:220)
03-21 17:12:42.874: E/AndroidRuntime(2101):     at libcore.net.http.HttpConnection.<init>(HttpConnection.java:71)
03-21 17:12:42.874: E/AndroidRuntime(2101):     at libcore.net.http.HttpConnection.<init>(HttpConnection.java:50)
03-21 17:12:42.874: E/AndroidRuntime(2101):     at libcore.net.http.HttpConnection$Address.connect(HttpConnection.java:351)
03-21 17:12:42.874: E/AndroidRuntime(2101):     at libcore.net.http.HttpConnectionPool.get(HttpConnectionPool.java:86)
03-21 17:12:42.874: E/AndroidRuntime(2101):     at libcore.net.http.HttpConnection.connect(HttpConnection.java:128)
03-21 17:12:42.874: E/AndroidRuntime(2101):     at libcore.net.http.HttpEngine.openSocketConnection(HttpEngine.java:308)
03-21 17:12:42.874: E/AndroidRuntime(2101):     at libcore.net.http.HttpEngine.connect(HttpEngine.java:303)
03-21 17:12:42.874: E/AndroidRuntime(2101):     at libcore.net.http.HttpEngine.sendSocketRequest(HttpEngine.java:282)
03-21 17:12:42.874: E/AndroidRuntime(2101):     at libcore.net.http.HttpEngine.sendRequest(HttpEngine.java:232)
03-21 17:12:42.874: E/AndroidRuntime(2101):     at libcore.net.http.HttpURLConnectionImpl.connect(HttpURLConnectionImpl.java:80)
03-21 17:12:42.874: E/AndroidRuntime(2101):     at com.pewlabs.sunds.Food.downloadFile(Food.java:64)
03-21 17:12:42.874: E/AndroidRuntime(2101):     at com.pewlabs.sunds.Food.onCreate(Food.java:45)
03-21 17:12:42.874: E/AndroidRuntime(2101):     at android.app.Activity.performCreate(Activity.java:4524)
03-21 17:12:42.874: E/AndroidRuntime(2101):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1071)

最佳答案

抛出的NetworkOnMainThreadException试图告诉您您正在主UI线程上进行网络操作。您需要在单独的Thread中执行这些操作,或者一个简单的约定是使用AsyncTaskLoader

关于java - Android:4.0 ICS 上奇怪的 openStream,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9808678/

相关文章:

java - Java内置库中的两个链接如何链接在一起?

java - 如何在 jDatePicker Java 中禁用日期

java - 具有单值的 JPA OR 条件

wcf - WCF TCP 和 HTTP 端点可以有相同的端口吗?

http - python 在 Content-Disposition 中请求 POST Multipart/form-data 和附加参数

java - 自定义 CacheInterceptor 被默认 Spring 的 CacheInterceptor 覆盖

php - 如何使用 PHP 原生函数和 Android 获取文件

android - 在android中将房间数据库导出到csv文件

android - Eclipse 音池加载错误

javascript - 类型错误 : First argument must be a string or Buffer.