Merhaba Arkadaşlar,
mobilhanem.com üzerinden anlattığımız/yayınladığımız derslere Androidde DownloadManager classını kullanarak istediğimiz linkten veri indirme dersi ile devam edeceğiz.Hepimizin malumudur ki bazen uygulama içinden cihaza yada direk uygulamamızın içine dosya download etmemiz gerekir.İşte burda Android 2.3 (Api 9) üzerinde çalışan DownladManager classı işimizi çok ama çok kolaylaştırıyor.
Arkadaşlar ben her zamanki gibi ufak bir uygulama üzerinde anlatacağım dersimizi. Uygulamamızda bir tane edittext iki tane buton var. Butonlardan biri, edittext alanına girilen url değerini alıyor ve gerekli kontrolleri yaptıktan sonra indirme işlemine başlıyor. Gerekli kontroller nedir diye sorarsanız, ben uygulamada iki kontrol yaptım.
1- Link “http://” ile başlayıp başlamadığı kontrolü
2- Linkteki indireceğimiz dosyanın uzantı kontrolü istediğim formattımı.
Siz daha fazlada kontrol yapabilirsiniz.
Diğer buton ise download işlemi bittiğinde enable oluyor ve tıklandığı zaman indirilme listesini açıyor.
Evet arkadaşlar geçelim kodlamaya.Kod üzerinde gerekli açıklamaları yapmaya çalıştım .
[wpdm_file id=18]
Anasayfa.java
import android.app.Activity; import android.app.DownloadManager; import android.app.DownloadManager.Request; import android.app.DownloadManager.Query; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.database.Cursor; import android.net.Uri; import android.os.Bundle; import android.view.View; import android.webkit.MimeTypeMap; import android.widget.Button; import android.widget.EditText; import android.widget.Toast; public class Anasayfa extends Activity { Button indir,indirmeListesi; EditText link_edit; String link; private long sira; private DownloadManager dm; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.anasayfa); link_edit = (EditText)findViewById(R.id.editText1);//Edittext alanımızı tanımlıyoruz BroadcastReceiver receiver = new BroadcastReceiver() {//BroadCast Receiver kullanma sebebimiz downloadın bittiğini koda iletebilmek için @Override public void onReceive(Context context, Intent intent) { String action = intent.getAction(); if (DownloadManager.ACTION_DOWNLOAD_COMPLETE.equals(action)) {//Eğer indirme başarılı ise dosyayı açacağız sira = intent.getLongExtra(DownloadManager.EXTRA_DOWNLOAD_ID, 0);//İndirilen dosyanın Downloads daki sırasını alıyoruz Query query = new Query(); query.setFilterById(sira); //Sıraya göre sorguluyorz Cursor c = dm.query(query);//Sorgu sonucunu Cursor a iletiyoruz if (c.moveToFirst()) { int columnIndex = c.getColumnIndex(DownloadManager.COLUMN_STATUS); if (DownloadManager.STATUS_SUCCESSFUL == c.getInt(columnIndex)) { //İndirme Başarılı ise String dosyaAdi = c.getString(c.getColumnIndex(DownloadManager.COLUMN_TITLE)); //Dosya adını alıyoruz Toast.makeText(getApplicationContext(), dosyaAdi+" Başarıyla indi", Toast.LENGTH_LONG).show(); indirmeListesi.setEnabled(true);//İndirme Listesindeki butonu enable ediyoruz }else{ Toast.makeText(getApplicationContext(), "Hatalı Link", Toast.LENGTH_LONG).show(); } } } } }; registerReceiver(receiver, new IntentFilter(DownloadManager.ACTION_DOWNLOAD_COMPLETE));//BroadCast Reciverı DownloadManageri dinlemesi için başlatıyoruz indir = (Button) findViewById(R.id.button1); indirmeListesi = (Button)findViewById(R.id.button2); indir.setOnClickListener(new View.OnClickListener() {//indir butonu tıklanınca @Override public void onClick(View v) { // TODO Auto-generated method stub link = link_edit.getText().toString(); if (!link.startsWith("http://") && !link.startsWith("https://")){//link http ile başlamıyorsa ekliyoruz yoksa hata veriyor link = "http://" + link; } String extension = MimeTypeMap.getFileExtensionFromUrl(link); //indireceğimiz file uzantısını alıyoruz if (extension != null) { MimeTypeMap mime = MimeTypeMap.getSingleton(); String mimeType = mime.getMimeTypeFromExtension(extension); if (mimeType != null) { //Uzantı istediğimşiz formattamı kontrol ediyoruz if (mimeType.toLowerCase().contains("pptx") || extension.toLowerCase().contains("pdf") || extension.toLowerCase().contains("doc") || extension.toLowerCase().contains("ppt") || extension.toLowerCase().contains("png") || extension.toLowerCase().contains("jpg")){//istedimiz formatta ise indirme işlemine geçiyoruz dm = (DownloadManager) getSystemService(DOWNLOAD_SERVICE);//DownloadManager objesi oluşturuyoruz Request request = new Request(Uri.parse(link)); //İndireceğimiz linki veriyoruz sira = dm.enqueue(request);//indirmeye başlıyoruz.Geriye download sırasını döner }else{ Toast.makeText(getApplicationContext(), "Geçersiz Uzantı", Toast.LENGTH_LONG).show(); } } } } }); indirmeListesi.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) {//İndirilenler Listesini açar // TODO Auto-generated method stub Intent i = new Intent(); i.setAction(DownloadManager.ACTION_VIEW_DOWNLOADS); startActivity(i); } }); } }
Evet arkadaşlar bu dersimde anlatmak istediklerim bu kadar. Sormak istediğiniz yada eklemek istediğiniz bir şey olursa çekinmeden yorum bırakabilirsiniz.
Bir dahaki dersimde Notification göndermeye yarıyan Google Cloud Messaging (GCM) anlatmaya çalışacağım. Sizlerden ricam facebook.com/mobilhanem sayfamızı beğenmeniz ve yazılımcı arkadaşlarınız ile paylaşmanızdır.
Bir dahaki dersimde görüşmek dileğiyle…
[wpdm_file id=18] 1