Download file in Android
Quello che vediamo oggi è come scaricare file in Android dalla rete.
Prima di tutto i permessi da mettere nell'AnrdoidManifest:
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
Come vedete due sono quelli che ci servono come minimo: quello legato a internet per la connessione, e quello per salvare i file sul dispositivo.
Nella nostra Activity:
public class MainActivity extends Activity {
private String path = Environment.getExternalStorageDirectory().getAbsolutePath() + File.separator;@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
new DownloadDatas().execute("");
}@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
public class DownloadDatas extends AsyncTask {@Override
protected Object doInBackground(Object... params) {
try {
DownloadFile.downlad(path + "file.sqlite");
} catch (IOException e) {
}
return null;
}
}}
Come prima cosa, notiamo che qui impostiamo il path che punta alla directory interna al dispositivo, dove salvare i file.
Poi abbiamo una classe che estende AsyncTask, per scaricare il file in maniera asincrona all'avvio della app.
Infine vediamo la classe che svolge il download:
public class DownloadFile {
public static void downlad(String localFile) throws IOException {
URL url = new URL("http://www.sito.com/download/file.sqlite");
URLConnection connection = url.openConnection();
connection.connect();
InputStream input = new BufferedInputStream(url.openStream());
OutputStream output = new FileOutputStream(localFile);
byte data[] = new byte[1024];
int count;
while ((count = input.read(data)) != -1) {
output.write(data, 0, count);
}
output.flush();
output.close();
input.close();
}
}
L'unico metodo richiede un parametro di tipo String, che corrisponde al path locale.
Sotto impostiamo l'URL del file e ci connettiamo con l'oggetto URLConnection.
Con FileOutputStream salviamo i dati che arrivano dall'BufferedInputStream.
E questo è quanto!
Ciao!
android java url urlconnection activity fileoutputstream bufferedinputstream asynctask
Commentami!