Android 从活动下载文件时出错
如果我尝试从网站下载图像(使用http连接),如果在我的android服务中执行下载,我不会有问题,而如果我尝试从活动下载文件的相同方法,则会发生以下错误:Android 从活动下载文件时出错,android,service,android-activity,download,android-service,Android,Service,Android Activity,Download,Android Service,如果我尝试从网站下载图像(使用http连接),如果在我的android服务中执行下载,我不会有问题,而如果我尝试从活动下载文件的相同方法,则会发生以下错误: 11-08 13:27:36.800: W/System.err(8010): android.os.NetworkOnMainThreadException 11-08 13:27:36.800: W/System.err(8010): at android.os.StrictMode$AndroidBlockGuardPolic
11-08 13:27:36.800: W/System.err(8010): android.os.NetworkOnMainThreadException
11-08 13:27:36.800: W/System.err(8010): at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1077)
11-08 13:27:36.800: W/System.err(8010): at java.net.InetAddress.lookupHostByName(InetAddress.java:477)
11-08 13:27:36.800: W/System.err(8010): at java.net.InetAddress.getAllByNameImpl(InetAddress.java:277)
11-08 13:27:36.800: W/System.err(8010): at java.net.InetAddress.getAllByName(InetAddress.java:249)
11-08 13:27:36.800: W/System.err(8010): at org.apache.harmony.luni.internal.net.www.protocol.http.HttpConnection.<init>(HttpConnection.java:69)
11-08 13:27:36.800: W/System.err(8010): at org.apache.harmony.luni.internal.net.www.protocol.http.HttpConnection.<init>(HttpConnection.java:48)
11-08 13:27:36.800: W/System.err(8010): at org.apache.harmony.luni.internal.net.www.protocol.http.HttpConnection$Address.connect(HttpConnection.java:304)
11-08 13:27:36.800: W/System.err(8010): at org.apache.harmony.luni.internal.net.www.protocol.http.HttpConnectionPool.get(HttpConnectionPool.java:89)
11-08 13:27:36.800: W/System.err(8010): at org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnectionImpl.getHttpConnection(HttpURLConnectionImpl.java:292)
11-08 13:27:36.800: W/System.err(8010): at org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnectionImpl.makeConnection(HttpURLConnectionImpl.java:274)
11-08 13:27:36.800: W/System.err(8010): at org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnectionImpl.retrieveResponse(HttpURLConnectionImpl.java:1038)
11-08 13:27:36.800: W/System.err(8010): at org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnectionImpl.getHeaderField(HttpURLConnectionImpl.java:481)
11-08 13:27:36.800: W/System.err(8010): at java.net.URLConnection.getHeaderFieldInt(URLConnection.java:572)
11-08 13:27:36.800: W/System.err(8010): at java.net.URLConnection.getContentLength(URLConnection.java:335)
切克
NetworkOnMainThreadException:当应用程序尝试在其主线程上执行网络操作时引发的异常
您应该在asynctask上调用sendfeedback方法,这样只有上面的代码才能工作。由于Web服务器需要花费大量时间来响应,主线程变得无响应。为了避免它,你应该在另一个线程上调用它。因此,异步任务更好
尝试使用此代码从网络下载图像
String myfeed="your url";
URL url;
try {
url = new URL(myfeed);
InputStream content = (InputStream)url.getContent();
d = Drawable.createFromStream(content , "src");
Bitmap bitmap = ((BitmapDrawable)d).getBitmap();
String path = Images.Media.insertImage(getContentResolver(),bitmap,mImageName, null);
}catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
将此添加到您的活动中
StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
StrictMode.setThreadPolicy(policy);
现在我只有一个问题:我希望我的主线程在继续执行之前等待下载。我能做什么?
StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
StrictMode.setThreadPolicy(policy);