2016-03-27 19 views
-2

Sunucudan birden fazla resim indirmek ve SD kartta depolamak istediğim bir android uygulaması geliştiriyorum. Bu görevi gerçekleştirmenin en iyi yolu hangisi. Bu görevi uygulamanın arka planında gerçekleştirmek istiyorum.Sunucudan görüntü indirin ve SD kartta saklayın

+3

bu çok eski bir soru olur Umut

new DownloadFileFromURL().execute(<The url you want to download from>); 

Ayrıca dosyayı

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

Manifest izinleri altına eklemeniz gerekecektir kullanarak yukarıdaki sınıf çağrı sormadan önce arama yapmalısınız Neyse cevabı burada bulabilirsiniz: http://stackoverflow.com/questions/3296850/how-do-i-transfer-an-image-from-its-url-to-the-sd-card – humazed

cevap

2

Görüntüleri harici depolama birimine indirmek ve kaydetmek için bir uyumsuz görev kullanın.

class DownloadFileFromURL extends AsyncTask<String, String, String> { 

/** 
* Before starting background thread 
* */ 
@Override 
protected void onPreExecute() { 
    super.onPreExecute(); 
    System.out.println("Starting download"); 
} 

/** 
* Downloading file in background thread 
* */ 
@Override 
protected String doInBackground(String... f_url) { 
    int count; 
    try { 
     String root = Environment.getExternalStorageDirectory().toString(); 

     System.out.println("Downloading"); 
     URL url = new URL(f_url[0]); 

     URLConnection conection = url.openConnection(); 
     conection.connect(); 
     // getting file length 
     int lenghtOfFile = conection.getContentLength(); 

     // input stream to read file - with 8k buffer 
     InputStream input = new BufferedInputStream(url.openStream(), 8192); 

     // Output stream to write file 

     OutputStream output = new FileOutputStream(root+"/downloadedfile.jpg"); 
     byte data[] = new byte[1024]; 

     long total = 0; 
     while ((count = input.read(data)) != -1) { 
       total += count; 

       // writing data to file 
       output.write(data, 0, count); 

      } 

      // flushing output 
      output.flush(); 

      // closing streams 
      output.close(); 
      input.close(); 

     } catch (Exception e) { 
      Log.e("Error: ", e.getMessage()); 
     } 

     return null; 
     } 



    /** 
    * After completing background task 
    * **/ 
    @Override 
    protected void onPostExecute(String file_url) { 
     System.out.println("Downloaded"); 
    } 
    } 

Sadece o

+0

Sanırım sadece bir görüntü için çalışacaktı. Bu durumda sunucuda birden çok görüntü var. ve tüm görüntüleri indirmem gerekiyor. –

+0

Her görüntü için onu çalıştırmanız gerekir. –

İlgili konular