2009-07-21 27 views

Respuesta

5

se puede utilizar el siguiente código para descargar una imagen:

URLConnection connection = uri.toURL().openConnection(); 
connection.connect(); 
InputStream is = connection.getInputStream(); 
BufferedInputStream bis = new BufferedInputStream(is, 8 * 1024); 
Bitmap bmp = BitmapFactory.decodeStream(bis); 
bis.close(); 
is.close(); 

Requiere el siguiente permiso en AndroidManifest.xml:

<uses-permission android:name="android.permission.INTERNET" /> 
+0

Y conecte la conexión a HttpURLConnection si desea establecer encabezados y leer el código de estado. – ThomasRS

5

Existe una biblioteca de cliente HTTP que podría ser compatible con Android ahora, pero para cualquier control de grano fino puede usar la URL & HttpURLConnection. el código se verá algo como esto:

URL connectURL = new URL(<your URL goes here>); 
HttpURLConnection conn = (HttpURLConnection)connectURL.openConnection(); 

// do some setup 
conn.setDoInput(true); 
conn.setDoOutput(true); 
conn.setUseCaches(false); 
conn.setRequestMethod("GET"); 

// connect and flush the request out 
conn.connect(); 
conn.getOutputStream().flush(); 

// now fetch the results 
String response = getResponse(conn); 

donde getResponse() se ve algo como esto, en su caso, de que está recibiendo una pila de datos binarios atrás es posible que desee cambiar el StringBuffer a una matriz de bytes y dividir las lecturas por un incremento mayor.

private String getResponseOrig(HttpURLConnection conn) 
{ 
    InputStream is = null; 
    try 
    { 
     is = conn.getInputStream(); 
     // scoop up the reply from the server 
     int ch; 
     StringBuffer sb = new StringBuffer(); 
     while((ch = is.read()) != -1) { 
      sb.append((char)ch); 
     } 
     return sb.toString(); 
    } 
    catch(Exception e) 
    { 
     Log.e(TAG, "biffed it getting HTTPResponse"); 
    } 
    finally 
    { 
     try { 
     if (is != null) 
      is.close(); 
     } catch (Exception e) {} 
    } 

    return ""; 
} 

Como se habla de datos de imágenes que pueden ser grandes y otras cosas que tiene que ser diligente acerca de Android es asegurarse de que suelte su memoria tan pronto como sea posible, sólo tienes 16mb del montón para jugar con para todas las aplicaciones y de que se agote rápido y la GC le vuelven loco si no está muy bien acerca de devolver los recursos de memoria

+0

¿El emulador cuando se ejecuta en el escritorio permite la aplicación se conecte a Internet? Creo que mi emulador no permite que el dispositivo se conecte a internet. –

+1

sí, se emulará la pila de la red – jottos

11

No se olvide de dar a la aplicación del permiso para conectarse a la Web,

en el AndroidManifest.xml:

<uses-permission android:name="android.permission.INTERNET" /> 
Cuestiones relacionadas