Quantcast
Channel: Programlama Defteri-Programlama dilleri hakkında ayrıntılı video dersler ve kaynak kodlar-iPhone Programlama Android Programlama » Android
Viewing all articles
Browse latest Browse all 15

Android Programlama Ders 17:İnternetten Cihaza Dosya Download Etmek

$
0
0

bilgi

Android programlama derslerimizden 17.sinde internetten bir dosyayı sd kartımıza download etmeyi öğreneceğiz.

Android uygulamaları geliştirirken çoğu zaman internetten dosya indirmeye ihtiyaç duyabilirsiniz.Bu bazen kurulum dosyalarınız bazende farklı türden veriler olabilir.Bunun için daha önceden hazırlamış olduğumuz hazır bir class(sınıf)’ı kullanacağız.

Aşağıdaki DownloadFile classını projenizde kullanacağınız classda onCreate fonksiyonundan sonra bir yere ekleyebilirsiniz.Burada önemli olan classın herhangi bir fonksiyonun içerisinde bulunmaması.

class DownloadFile extends AsyncTask<String,Integer,Long> {
		ProgressDialog mProgressDialog = new ProgressDialog(SinifAdi.this);//"SinifAdi" kısmını activity classınızın adıyla değiştirin.
		String strFolderName;

	    @Override
	    protected void onPreExecute() {
	        super.onPreExecute();
	        mProgressDialog.setMessage("Dosya indiriliyor");
	        mProgressDialog.setIndeterminate(false);
			mProgressDialog.setMax(100);
			mProgressDialog.setCancelable(true);
			mProgressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
			mProgressDialog.show();

	    }
	    @Override
	    protected Long doInBackground(String... aurl) {
	        int count;
	        try {
	            URL url = new URL((String) aurl[0]);
	            URLConnection conexion = url.openConnection();
	            conexion.connect();
	            String targetFileName="DosyaAdı"+".exe";//İndirilen dosyanın adını ve uzantısını burada belirlemeniz gerekiyor.

	            int lenghtOfFile = conexion.getContentLength();

	            String PATH = Environment.getExternalStorageDirectory()+ "/"+"downloadFolder"+"/";//downloadFolder kısmını dosyanın indirilmesini istediğiniz klasör ismiyle değiştirin.
	            File folder = new File(PATH);

	            if(!folder.exists()){
	                folder.mkdir();//Klasör yoksa oluşturuluyor.
	            }

	            InputStream input = new BufferedInputStream(url.openStream());
	            OutputStream output = new FileOutputStream(PATH+targetFileName);

	            byte data[] = new byte[1024];

	            long total = 0;

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

	                publishProgress((int)(total*100/lenghtOfFile));//İlerlemenin yüzde olarak progress bar'a yansıtılmasını sağlıyor.
	                output.write(data, 0, count);
	            }

	            output.flush();
	            output.close();
	            input.close();

	        } catch (Exception e) {}
	        return null;
	    }

	    protected void onProgressUpdate(Integer... progress) {

	         mProgressDialog.setProgress(progress[0]);
	         if(mProgressDialog.getProgress()==mProgressDialog.getMax()){
	 	    	mProgressDialog.dismiss();
	 	    	Toast.makeText(fa, "Dosya başarıyla indirildi", Toast.LENGTH_SHORT).show();

	         }

	    }

	    protected void onPostExecute(String result) {

	    }

	}

Bu classın yaptığı şey dosyayı internetten byte byte indirip cihazınızda birleştirmek.Değiştirmeniz gereken kısımları yorum satırlarında belirttim.Dosyanın adı ve uzantısı,indirileceği hedef klasör gibi ayrıntıları kendinize göre değiştirmeniz gerekiyor.Aynı zamanda mutlaka progress barın gösterileceği hedef activity’i de bulunduğunuz activity class ismiyle değiştirmeyi unutmayın.

Bu classı kullanarak dosya indirebilmeniz için manifest dosyamıza eklememiz gereken 3 permission(izin) bulunuyor:




Peki kullanırken ne yapmanız gerekiyor?Bu da classı projeye eklemek kadar basit.Dosyayı indirmek istediğiniz yerde new DownloadFile().execute(“dosyalinki”); komutuyla dosyayı belirlediğiniz klasöre indirtebilirsiniz.

Classı dosya indirmek istediğiniz her projede projenize ekleyebilir ve rahatlıkla kullanabilirsiniz.

Bu yazıyla ilgili tüm sorularınızı Forum bölümümüzde sorabilirsiniz.

Böylece bu dersimizin sonuna gelmiş olduk.Başka bir Android Programlama dersinde görüşmek üzere :)

Bu makalenin tüm telif hakları ProgramlamaDefteri’ne ait olup kaynak gösterilmeden paylaşılması yasaktır.

Okuduktan sonra dersi farklı sitelerde ve sosyal ağlarda paylaşıp bize destek olmayı unutmayın.

17.190 kez görüntülendi


Viewing all articles
Browse latest Browse all 15

Latest Images