2012-10-21 96 views
0

我制作了一个应用程序,我需要从给定的链接下载图像。它显示没有错误logcat中没有错误消息。以下是我的代码在android中下载图像

public Drawable getImage(String ImagePath,String fileName) { 

    Log.v("download", "image downloading from net"); 

    boolean bin = getBinaryWebFile(ImagePath,fileName); 
    Drawable draw = Drawable.createFromPath(SavePath+fileName); //..........(1) 
    return draw; 

}//getImage ends here*/ 

private boolean getBinaryWebFile(String inURL, String filename) { 

    File file = new File(SavePath,filename); 

    try { 

     URL url = new URL(inURL); 
     HttpURLConnection con = (HttpURLConnection)url.openConnection(); 

     con.setRequestMethod("GET"); 
     con.setDoOutput(true); 
     con.connect(); 

     InputStream is = con.getInputStream(); 
     FileOutputStream fos = new FileOutputStream(file); 
     BufferedOutputStream bout = new BufferedOutputStream(fos,1024); 
     byte[] data =new byte[1024]; 
     int x = 0; 

     while((x=is.read(data,0,1024))>=0){ 
      bout.write(data,0,x); 
     } 
     fos.flush(); 
     bout.flush(); 
     fos.close(); 
     bout.close(); 
     is.close(); 

     return true; 

    } catch (MalformedURLException e) { 
     Log.d("PowerSaver","getBinaryWebFile->MalformedURLException: "+e.getMessage()); 
     //e.printStackTrace(); 
    } catch (IOException e) { 
     Log.d("PowerSaver","getBinaryWebFile->I/O exception: "+e.getMessage()); 
    } 
    return false; 

}//getbinarywebfile ends here 

在调试一切运行良好,最后我得到绘制为空(注1)。我甚至在清单中写下了以下权限。

<uses-permission 
    android:name = "android.permission.INTERNET"/> 
<uses-permission 
    android:name = "android.permission.WRITE_EXTERNAL_STORAGE"/> 
<uses-permission 
    android:name = "android.permission.ACCESS_WIFI_STATE" /> 
<uses-permission 
    android:name = "android.permission.ACCESS_NETWORK_STATE"/> 
<uses-permission 
    android:name = "android.permission.READ_PHONE_STATE"/> 

仍然获得在平局null,其作为注释1.

回答

0

你运行模拟器内你的应用程序中引用?确保它有一个适当的互联网连接。有时模拟器可能会使互联网连接松动,尤其是当您在不重新启动模拟器的情况下更换网络时。

+0

烨其实我也获取了一些数据及其未来.... – shark

1

此代码的工作对我来说:

private static long DownloadFromUrl(Context context, URL fileUrl, 
     String fileName) throws Exception { // this is the downloader method 

    try { 

     URL myFileUrl = null; 
     myFileUrl = fileUrl; 

     // *** Internet connection 
     HttpURLConnection conn = (HttpURLConnection) myFileUrl 
       .openConnection(); 
     conn.setDoInput(true); 
     conn.connect(); 
     // int length = conn.getContentLength(); 
     // int[] bitmapData =new int[length]; 
     // byte[] bitmapData2 =new byte[length]; 

     InputStream is = conn.getInputStream(); 

     // decodificar la imagen de internet en bmImg 
     Bitmap bmImg = BitmapFactory.decodeStream(is); 

     // ***Save in the the SD 

     FileOutputStream out = new FileOutputStream(
       <path + filename>); 

     byte[] buffer = new byte[1024]; 
     int len; 
     while ((len = is.read(buffer)) > 0) { 
      out.write(buffer, 0, len); 
      tam += len; 
     } 
     is.close(); 

     // Save using the selected format and quality 
     bmImg.compress(Bitmap.CompressFormat.PNG, 
       <quality>, out); 
     out.flush(); 
     out.close(); 

     // tam=bmImg.getByteCount(); 
     bmImg.recycle(); 

     return tam; 

    } catch (IOException e) { 
     // showErrorMessage(context, "Error downloading"); 
     e.printStackTrace(); 
     return 0; 
    } 

}