Neste artigo, será apresentado um código para baixar um arquibo ou imagem a partir de um website para seu telefone Android. Você pode trabalhar com imagens (e arquivos) em suas aplicações, mas esse artigo pode ser útil para desenvolvedores Java também.
Abaixo segue o código com comentários e logs:
package com.helloandroid.imagedownloader; import java.io.BufferedInputStream; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.net.URL; import java.net.URLConnection; import org.apache.http.util.ByteArrayBuffer; import android.util.Log; public class ImageManager { private final String PATH = "/data/data/com.helloandroid.imagedownloader/"; //put the downloaded file here public void DownloadFromUrl(String imageURL, String fileName) { //this is the downloader method try { URL url = new URL("http://yoursite.com/" + imageURL); //you can write here any link File file = new File(fileName); long startTime = System.currentTimeMillis(); Log.d("ImageManager", "download begining"); Log.d("ImageManager", "download url:" + url); Log.d("ImageManager", "downloaded file name:" + fileName); /* Open a connection to that URL. */ URLConnection ucon = url.openConnection(); /* * Define InputStreams to read from the URLConnection. */ InputStream is = ucon.getInputStream(); BufferedInputStream bis = new BufferedInputStream(is); /* * Read bytes to the Buffer until there is nothing more to read(-1). */ ByteArrayBuffer baf = new ByteArrayBuffer(50); int current = 0; while ((current = bis.read()) != -1) { baf.append((byte) current); } /* Convert the Bytes read to a String. */ FileOutputStream fos = new FileOutputStream(file); fos.write(baf.toByteArray()); fos.close(); Log.d("ImageManager", "download ready in" + ((System.currentTimeMillis() - startTime) / 1000) + " sec"); } catch (IOException e) { Log.d("ImageManager", "Error: " + e); } } }
Você pode checar o arquivo baixado no gerenciador de arquivos do emulador (DDMS):

Como último passo você devia checar as permissões de sua aplicação para usar a internet:

Como último passo você devia checar as permissões de sua aplicação para usar a internet:
android.permission.INTERNET android.permission.ACCESS_NETWORK_STATE android.permission.READ_PHONE_STATE
Modifique o arquivo AndroidManifest.xml para ficar dessa forma:
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.helloandroid.imagedownloader" android:versionCode="1" android:versionName="1.0"> <application android:icon="@drawable/icon" android:label="@string/app_name"> <activity android:name=".ImageDownloader" android:label="@string/app_name"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> <uses-sdk android:minSdkVersion="7" /> <uses-permission android:name="android.permission.INTERNET"></uses-permission> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission> <uses-permission android:name="android.permission.READ_PHONE_STATE"></uses-permission> </manifest>
Eu espero que você ache esse artigo útil…
Traduzido de http://www.helloandroid.com