3

我完全绝望了,这就是我向你寻求帮助的原因。我在 android 应用程序中有以下代码:

public void OnButtonClick(View view) throws ClientProtocolException, IOException, Exception
{       
    URL yahoo = new URL("http://privyrobsi.sk/brigades/getBrigades.json");
    URLConnection yc = yahoo.openConnection();
    BufferedReader in = new BufferedReader(
                            new InputStreamReader(
                            yc.getInputStream()));
    String inputLine;

    EditText ET = (EditText) findViewById(R.id.editText2);
    while ((inputLine = in.readLine()) != null) ET.setText(ET.getText()+inputLine);         
    in.close();        
}

我从这里得到了这段代码,我只修改了一点。当我尝试将代码作为独立的 java 应用程序运行时,它可以工作。但是当我尝试在android中使用它时,模拟器说不幸的是,应用程序停止了。我在这里保存了 LogCat 的日志。我的清单文件中也有使用权限 android:name="android.permission.INTERNET" 。

4

1 回答 1

4

您不能在主线程中执行网络操作。在asynctask中执行此操作。

更新:

您的 logcat 数据显示您有 NetworOnMainThreadException。根据文档

当应用程序尝试在其主线程上执行网络操作时引发的异常。

这仅针对面向 Honeycomb SDK 或更高版本的应用程序抛出。允许以早期 SDK 版本为目标的应用程序在其主事件循环线程上进行网络连接,但非常不鼓励这样做。

解决方案:

正如我已经提到的,您必须使用不同的线程来执行网络操作。您可以使用以下

  1. 异步任务
  2. 不同的工作线程
  3. 处理程序

检查这个线程。这个问题的答案几乎涵盖了所有的解决方案

于 2013-05-07T15:21:05.797 回答