Merhaba arkadaşlar,
mobilhanem.com sitemizden anlattığımız/yayınladığımız derslerimize Androidde İnternet Bağlantısı Kontrolü ile devam ediyoruz.Bugün uygulamalarımızın bir çoğu internet bağlantısı gerektirmektedir.Özellikle sunucu ile veri alış verişinde bulunurken internet kullanmamız şarttır.
Uygulamalarımızı yazarken sanki her zaman internet bağlantısı olduğunu düşünerek yazarız ve bundan dolayıdır ki internet bağlantısı gereken bir durumda cihaz internete bağlı değilse uygulamamız patlamakta yani crash olmaktadır. İşte bunu önlemek için bu dersimizde nasıl internet bağlantısı kontrolü yapacağımızı anlatacağım.
İnternet bağlantısı kontrolünü iki yolla yapabilmekteyiz.
1- Manuel Kontrol
2-Otomatik Kontrol
MANUEL KONRTOL
Manuel kontrol bizim istediğimiz zamanlarda yaptığımız kontroldür.Mesala butona bastığımızda sunucuyla bağlantı kuracağımızı farzedelim. İşte burda butona basılınca önce internet bağlımı kontrolü yapılır eğer bağlıysa sunucu bağlantısı gerçekleştirilir.Bağlı değilsede kullanıcıya uyarı verdirilir.Bunu nasıl yapacağımızı kod üzerindede anlatmaya çalıştım.
Anasayfa.java
package com.mobilhanem.otomatikinternetkontrol; import android.app.Activity; import android.content.Context; import android.net.ConnectivityManager; import android.net.NetworkInfo; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.Toast; public class Anasayfa extends Activity { Button manuel; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.anasayfa); manuel = (Button)findViewById(R.id.button1); manuel.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub if(internetKontrol()){ //internet kontrol methodu çağırılıyor Toast.makeText(getApplicationContext(), "İnternet Bağlı!", Toast.LENGTH_LONG).show(); }else{ Toast.makeText(getApplicationContext(), "İnternet Yok!", Toast.LENGTH_LONG).show(); } } }); } protected boolean internetKontrol() { //interneti kontrol eden method // TODO Auto-generated method stub ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo netInfo = cm.getActiveNetworkInfo(); if (netInfo != null && netInfo.isConnectedOrConnecting()) { return true; } return false; } }
Manifestte ise verilecek izinler:
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
Yukardaki kodda internetKontrol() methodu interneti bağlı olup olmadığını kontrol eden methoddur.Kendi projenizde kullanırken bu methodu static method yapıp istediğiniz yerden çağırarak kullanabilirsiniz.
OTOMATİK KONRTOL
Otomatik kontrol de ise sizin kontrol etmenize gerek kalmadan yazdığımız bir Broadcast Receiver sınıfı ile ağı dinliyor ve internet bağlantısı koptuğu zaman kullanıcıya haber veriyoruz. Açıklamaları kod üzerinde yapmaya çalıştım.
Anasayfa.java
package com.mobilhanem.otomatikinternetkontrol; import android.net.ConnectivityManager; import android.os.Bundle; import android.app.Activity; import android.content.IntentFilter; import android.util.Log; public class Anasayfa extends Activity { private static final String LOG_TAG = "Otomatik internet Kontrol¸"; private NetworkChangeReceiver receiver;//Network dinleyen receiver objemizin referans˝ @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_anasayfa); //Receiverımızı register ediyoruz //Yani Çalıştırıyoruz IntentFilter filter = new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION); receiver = new NetworkChangeReceiver(); registerReceiver(receiver, filter); } @Override protected void onDestroy() { //Activity Kapatıldığı zaman receiver durduralacak.Uygulama arka plana alındığı zamanda receiver çalışmaya devam eder Log.v(LOG_TAG, "onDestory"); super.onDestroy(); unregisterReceiver(receiver);//receiver durduruluyor } }
NetworkChangeReceiver.java
package com.mobilhanem.otomatikinternetkontrol; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.net.ConnectivityManager; import android.net.NetworkInfo; import android.util.Log; import android.widget.Toast; public class NetworkChangeReceiver extends BroadcastReceiver { private static final String LOG_TAG = "Otomatik internet Kontrol¸"; static boolean isConnected = false; @Override public void onReceive(final Context context, final Intent intent) { isNetworkAvailable(context); //receiver çalıştığı zaman çağırılacak method } private boolean isNetworkAvailable(Context context) { ConnectivityManager connectivity = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); //Sistem ağını dinliyor internet var mı yok mu if (connectivity != null) { NetworkInfo[] info = connectivity.getAllNetworkInfo(); if (info != null) { for (int i = 0; i < info.length; i++) { if (info[i].getState() == NetworkInfo.State.CONNECTED) { if(!isConnected){ //internet varsa isConnected = true; Log.v(LOG_TAG, "internete Bağlandınız!"); Toast.makeText(context, "internete Bağlandınız!", Toast.LENGTH_LONG).show(); } return true; } } } } isConnected = false; Toast.makeText(context, "İnternet Yok", Toast.LENGTH_LONG).show(); Log.v(LOG_TAG, "İnternet Yok!"); return false; } }
manifestte verilecek izinler:
<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
BroadcastReceiver’mızı bir kere çalıştırmamız yeterlidir.Her activity de ayrı ayrı çalıştırmaya gerek yoktur. Burdada sunucuyla bağlantı yapmadan static değer olan isConnected değerini kontrol edip ondan sonra sunucu ile bağlantımızı gerçekleştirebiriz.
Evet arkadaşlar kaynak kodu indirip çalışan halini inceleyebilirsiniz.Bu dersimde anlatmak istediklerim bu kadar. Sizlerden ricamız facebook.com/mobilhanem sayfamızı beğenmenizdir.
Bir dahaki dersimizde görüşmek dileğiyle kendinize iyi bakın.
Tüm Android Ders, Proje ve Kaynak Kodlar için tıklayınız.
[wpdm_file id=23] 5