我正在尝试一个简单的例子:http://www.vogella.com/articles/AndroidJSON/article.html
但是收到了错误..任何人都可以告诉我为什么会收到此错误:http://puu.sh/1mGz1
答案 0 :(得分:1)
使用AsyncTask从UI线程发出服务器请求,因此请将代码更改为:
///Your code...
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
new LongOperation().execute("");
}
private class LongOperation extends AsyncTask<String, Void, String> {
@Override
protected String doInBackground(String... params) {
//call readtwitterFeed() method here
String readtwitterFeed=readtwitterFeed();
return readtwitterFeed;
}
@Override
protected void onPostExecute(String result) {
try {
JSONArray jsonArray = new JSONArray(result);
Log.i(ParseJSON.class.getName(),
"Number of entries " + jsonArray.length());
for (int i = 0; i < jsonArray.length(); i++) {
JSONObject jsonObject = jsonArray.getJSONObject(i);
Log.i(ParseJSON.class.getName(), jsonObject.getString("text"));
}
} catch (Exception e) {
e.printStackTrace();
}
}
@Override
protected void onPreExecute() {
}
@Override
protected void onProgressUpdate(Void... values) {
}
}
答案 1 :(得分:0)
您正尝试在主线程上发出数据请求。使用AsyncTask执行此操作 或者在onCreate()方法中添加这两行来绕过它。
StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
StrictMode.setThreadPolicy(policy);
我建议使用asynctask。