NetworkOnMainThreadException
提示你不要在主线程中访问网络。
把要访问的网络单独放在一个线程中:
new Thread(){
@Override
public void run()
{
//把你上面那段网络访问的代码放在这里
}
最终的解决办法还是通过线程来请求网络数据,给你一个使用asyncTask的例子
提示你不要在主线程中访问网络。
把要访问的网络单独放在一个线程中:
new Thread(){
@Override
public void run()
{
//把你上面那段网络访问的代码放在这里
}
}.start();
如果是临时测试不是最终发布版本可以通过去掉strictMode来解决
办法是在oncreate中使用如下代码
1
2
3
4
5
6
7
|
public
void
onCreate(Bundle savedInstanceState) {
super
.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
StrictMode.ThreadPolicy policy =
new
StrictMode.ThreadPolicy.Builder().permitAll().build();
StrictMode.setThreadPolicy(policy);
}
|
最终的解决办法还是通过线程来请求网络数据,给你一个使用asyncTask的例子
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
|
public
void
downloadHtml(View view)
throws
IOException{
DownloadHtmlTask task =
new
DownloadHtmlTask();
task.execute(
new
String[] {
"http://www.bcoder.com"
});
}
private
class
DownloadHtmlTask
extends
AsyncTask<String, Void, String> {
@Override
protected
String doInBackground(String... urls) {
String response =
""
;
InputStream in =
null
;
for
(String url : urls) {
DefaultHttpClient client =
new
DefaultHttpClient();
HttpGet httpGet =
new
HttpGet(url);
try
{
URL urlget =
new
URL(url);
HttpURLConnection conn = (HttpURLConnection)urlget.openConnection();
conn.connect();
in = (conn.getInputStream());
BufferedReader buffer =
new
BufferedReader(
new
InputStreamReader(in));
String s =
""
;
while
((s = buffer.readLine()) !=
null
) {
response += s;
}
}
catch
(Exception e) {
e.printStackTrace();
}
}
return
response;
}
@Override
protected
void
onPostExecute(String result) {
TextView textView = (TextView)findViewById(R.id.textView1);;
textView.setText(result);
}
}
|