我正在尝试从网站检索数据,但我的应用程序不断崩溃。我已将问题归结为 openStream() 命令。我正在使用的类定义如下。我无法弄清楚我做错了什么。任何建议表示赞赏。
private class MyAsyncTask extends AsyncTask<Void, Void, Void>{
//execute on background (out of the UI thread)
protected void doInBackground() {
URL url = null;
try {
url = new URL("URL is in here");
BufferedInputStream bis = new BufferedInputStream(url.openStream());
byte[] buffer = new byte[1024];
StringBuilder sb = new StringBuilder();
int bytesRead = 0;
while((bytesRead = bis.read(buffer)) > 0) {
String text = new String(buffer, 0, bytesRead);
sb.append(text);
}
bis.close();
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
@Override
protected Void doInBackground(Void... arg0) {
// TODO Auto-generated method stub
return null;
}
}
我的清单文件中确实有 Internet 权限。再次感谢任何帮助。
以下是 logcat 中显示的错误。
07-11 11:26:31.110: E/AndroidRuntime(9259): 致命异常: main 07-11 11:26:31.110: E/AndroidRuntime(9259): java.lang.RuntimeException: 无法启动活动 ComponentInfo{com. example.annarbormap/com.example.annarbormap.MapActivity}:android.os.NetworkOnMainThreadException 07-11 11:26:31.110:E/AndroidRuntime(9259):在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2246) 07 -11 11:26:31.110: E/AndroidRuntime(9259): 在 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2296) 07-11 11:26:31.110: E/AndroidRuntime(9259): 在 android.app .ActivityThread.access$700(ActivityThread.java:151) 07-11 11:26:31.110: E/AndroidRuntime(9259): 在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:1281) 07-11 11: 26:31.110:E/AndroidRuntime(9259):在 android.os.Handler。dispatchMessage(Handler.java:99) 07-11 11:26:31.110: E/AndroidRuntime(9259): 在 android.os.Looper.loop(Looper.java:137) 07-11 11:26:31.110: E/ AndroidRuntime(9259): 在 android.app.ActivityThread.main(ActivityThread.java:5293) 07-11 11:26:31.110: E/AndroidRuntime(9259): 在 java.lang.reflect.Method.invokeNative(Native Method) 07-11 11:26:31.110: E/AndroidRuntime(9259): 在 java.lang.reflect.Method.invoke(Method.java:511) 07-11 11:26:31.110: E/AndroidRuntime(9259): 在com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1102) 07-11 11:26:31.110: E/AndroidRuntime(9259): at com.android.internal.os.ZygoteInit.main(ZygoteInit .java:869) 07-11 11:26:31.110: E/AndroidRuntime(9259): at dalvik.system.NativeStart.main(Native Method) 07-11 11:26:31.110: E/AndroidRuntime(9259): Caused作者:android.os。NetworkOnMainThreadException 07-11 11:26:31.110: E/AndroidRuntime(9259): 在 android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1118) 07-11 11:26:31.110: E/AndroidRuntime(9259):在 java.net.InetAddress.lookupHostByName(InetAddress.java:385) 07-11 11:26:31.110: E/AndroidRuntime(9259): 在 java.net.InetAddress.getAllByNameImpl(InetAddress.java:236) 07-11 11 :26:31.110: E/AndroidRuntime(9259): at java.net.InetAddress.getAllByName(InetAddress.java:214) 07-11 11:26:31.110: E/AndroidRuntime(9259): at libcore.net.http。 HttpConnection.(HttpConnection.java:70) 07-11 11:26:31.110: E/AndroidRuntime(9259): 在 libcore.net.http.HttpConnection.(HttpConnection.java:50) 07-11 11:26:31.110: E/AndroidRuntime(9259):在 libcore.net.http.HttpConnection$Address.connect(HttpConnection.java:340) 07-11 11:26:31。110: E/AndroidRuntime(9259): 在 libcore.net.http.HttpConnectionPool.get(HttpConnectionPool.java:87) 07-11 11:26:31.110: E/AndroidRuntime(9259): 在 libcore.net.http.HttpConnection .connect(HttpConnection.java:128) 07-11 11:26:31.110: E/AndroidRuntime(9259): 在 libcore.net.http.HttpEngine.openSocketConnection(HttpEngine.java:316) 07-11 11:26:31.110 : E/AndroidRuntime(9259): 在 libcore.net.http.HttpsURLConnectionImpl$HttpsEngine.makeSslConnection(HttpsURLConnectionImpl.java:461) 07-11 11:26:31.110: E/AndroidRuntime(9259): 在 libcore.net.http。 HttpsURLConnectionImpl$HttpsEngine.connect(HttpsURLConnectionImpl.java:433) 07-11 11:26:31.110: E/AndroidRuntime(9259): 在 libcore.net.http.HttpEngine.sendSocketRequest(HttpEngine.java:290) 07-11 11: 26:31.110:E/AndroidRuntime(9259):在 libcore.net.http.HttpEngine。sendRequest(HttpEngine.java:240) 07-11 11:26:31.110: E/AndroidRuntime(9259): 在 libcore.net.http.HttpURLConnectionImpl.getResponse(HttpURLConnectionImpl.java:282) 07-11 11:26:31.110: E/AndroidRuntime(9259): 在 libcore.net.http.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.java:177) 07-11 11:26:31.110: E/AndroidRuntime(9259): 在 libcore.net.http.HttpsURLConnectionImpl.getInputStream (HttpsURLConnectionImpl.java:271) 07-11 11:26:31.110: E/AndroidRuntime(9259): at java.net.URL.openStream(URL.java:462) 07-11 11:26:31.110: E/AndroidRuntime (9259): 在 com.example.annarbormap.MapActivity$MyAsyncTask.doInBackground(MapActivity.java:77) 07-11 11:26:31.110: E/AndroidRuntime(9259): 在 com.example.annarbormap.MapActivity.onCreate( MapActivity.java:48) 07-11 11:26:31.110: E/AndroidRuntime(9259): 在 android.app.Activity.performCreate(Activity.java:5250) 07-11 11:26:31.110: E/AndroidRuntime(9259): 在 android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1097) 07-11 11:26: 31.110: E/AndroidRuntime(9259): 在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2210) 07-11 11:26:31.110: E/AndroidRuntime(9259): ... 11 更多