26 Kasım 2013 Salı

Android Programlama Ders 16:Connectivity Manager ile Internet Bağlantısı Kontrolü

Video ders hazırlamada yaşadığımız bazı sıkıntılardan dolayı kompleks olmayan dersleri yazılı olarak hazırlamaya karar verdik.Artık takip eden derslerimizin bir kısmı yazılı şekilde yer alacak.
Bu dersimizde internet bağlantısına ihtiyaç duyan uygulamaların ihtiyacı olan bir kontrol mekanizması hazırlayacağız.
Eğer uygulamanız internete bağlanarak bazı işlemler gerçekleştiriyorsa internet bağlantısı bulunmayan kullanıcılar uygulamayı açtığında ilginç durumlarla karşılaşabilir.Normalde hiç hata bulunmayan uygulamanız hatalıymış gibi görünebilir.Böyle bir durumda internet bağlantısına ihtiyaç duyulduğunu fark etmeyen kullanıcılar uygulamanızı kaldıracak ve market üzerinde düşük puanla değerlendireceklerdir.Bu da uygulamanızın diğer kullanıcılar tarafından indirilmesini engelleyebilir.
Bu nedenle uygulamamıza bir kontrol mekanizması koymakta fayda var.Bu mekanizmayı istediğiniz yere yerleştirebilirsiniz ancak benim burada yapacağım şey uygulama açılırken bu durumu kontrol etmek olacak.İnternet bağlantısı var ise uygulama çalışacak yok ise kullanıcıya durum bildirilip uygulama kapanacak.

Öncelikle yeni bir Activity oluşturup bu Activity’i uygulamanızın başlangıç yani LAUNCHER kodlu Activity’si haline getirin.Daha önceki derslerimizden bildiğiniz üzere Activity’nin kayıt işlemlerini AndroidManifest.xml dosyasından yapıyorduk.Yeni Activity’i oluşturduktan sonra aşağıdaki kontrol fonksiyonunu onCreate metodundan önce bir yere kopyalayın.Bu fonksiyon boolean tipindedir ve bize internet bağlantısı var ise true yok ise false değeri döndürecek.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
boolean internetBaglantisiVarMi() {
        ConnectivityManager conMgr = (ConnectivityManager) getSystemService (Context.CONNECTIVITY_SERVICE);
        if (conMgr.getActiveNetworkInfo() != null
        && conMgr.getActiveNetworkInfo().isAvailable()
        && conMgr.getActiveNetworkInfo().isConnected()) {
        return true;
        } else {
        return false;
        }
    }
Daha sonra onCreate metodunuzun içerisine aşağıdaki kod parçasını ekleyin:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
if(!internetBaglantisiVarMi())
        {
            AlertDialog alertDialog = new AlertDialog.Builder(this).create();
            alertDialog.setMessage("Uygulamayı kullanabilmek için internet bağlantınızın aktif olması gerekmektedir");
            alertDialog.setButton("Tamam", new DialogInterface.OnClickListener() {
               public void onClick(DialogInterface dialog, int which) {
                  System.exit(0);
               }
            });
            alertDialog.show();
        }
        else{
            startActivity(new Intent("activitynize verdiğiniz action name buraya gelecek"));
        }
Bu kısımda yaptığımız şey ise fonksiyonumuzu kullanarak bir kontrol gerçekleştirmek.if bloğu içerisinde yaptığımız bu kontrolde eğer internet bağlantısı yok ise bir AlertDialog oluşturup kullanıcıya durum bildirilecek.Bu AlertDialog tek bir butona sahip o da Tamam olarak adlandırılmış.Tamam butonuna basıldığında ise uygulama kapanacaktır.
Eğer tersi bir durum olursa bu internet bağlantısı var anlamına gelir.Bu durumda ise daha önce uygulamamızın başlangıç Activity’si olan Activity başlatılır ve uygulama kaldığı yerden devam eder.
Bu sayede internet bağlantısının durumuna göre uygulama bir sonraki adımdan devam edecek ya da kapanacaktır.
Bu kontrol için manifest dosyamıza eklememiz gereken 2 permission(izin) olduğunu da belirtelim:
1
2
3
<uses-permission android:name="android.permission.INTERNET">
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE">
</uses-permission></uses-permission>
Genelde yapılan hatalar bu izinlerin verilmemesinden kaynaklanıyor.Uygulama geliştirirken her zaman bu ihtimalde aklınızın bir köşesinde bulunmalı.
Aynı zamanda bu kontrolün bazı durumlarda yanlış sonuçlar verebileceğini de belirtelim.Örneğin bağlandığınız hat proxy’e ihtiyaç duyuyorsa internete bağlı gibi görünmenize rağmen uygulamanız veri çekemeyecektir.Bu da yine hata anlamına gelir.Biraz daha gelişmiş bir kontrol için interneti biraz karıştırmanız gerekecek :)
Böylece bu dersimizin sonuna gelmiş olduk.Başka bir derste 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.

Hiç yorum yok:

Yorum Gönder