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
anlatımın için çok tşk ederim bir çok uygulamada işimize yarayacak bir konu olmuş bazıları ne işime yarıyacak diyor belki mesela int siz bir uygulama yaptınız ama reklam koydunuz int olmadığı için reklam görünmüyor ama reklamnın arka planı orda sırıtıyor bunu önlemenize olan verir int varsa reklamı göster internet yoksa gösterme gibi 🙂 herkese kolay gelsin iyi çalışmalar
Merhaba. Bir servis aktivitesinde, kişi ilgili uygulamayı kapatsa bile internet bağlantısı değişikliği hakkında bilgi sahibi olmak istiyorum bunu nasıl yapabilirim?
Bunu yapman için Service class kullanman gerekir.Service class ile ilgili dersime buradan ulaşabilirsin.
http://www.mobilhanem.com/android-service-kullanimi-ve-service-httppost-notificaton/
Bu dersimde service üzerinden notification gönderiyorum.Sen onun yerine internet kontrolü yapıp burdaki dersimizde yaptığımız gibi Notification atmıcaksında kendi gereksinimlerine göre şekillendireceksin.
Hocam Merhabalar;
Yukarıda Bahsettiğiniz Konuda webview ile hazırladığım uygulamayı her sayfada internet bağlantısını kontrol etme işlemini nasıl yapabiliriz. yani sadece uygulama ilk açıldığında deil tıklanan tüm sayfalarda sayfa açılırken kontrol edip internet yoksa internet bağlantınızı kontrol edin diye uyarı versin internet varsa bağlantı devam etsin.
Öncelikle WebView dersimizi incelemelisin:
http://www.mobilhanem.com/android-webview-kullanimi/
Yukardaki derste shouldOverrideUrlLoading methodu var. Bu method her bir linke tıklandığında çağırılıyor. Bu method içinde internet kontrolünü yapabilirsin.
Hocam Derse Baktım Fakat Ekleyince Uygulama Hiç Açılmıyor Beyaz Ekran Çıkıyor Karşıma
Beyaz ekran cıkması demek yükleme yapmıyor yani her zaman internet yok gibi davranıyor. Onu çözmen lazım yani anladığım kadarıyla internet kontrolünü yanlıs yapıyorsun.
Hocam rica etsem shouldOverrideUrlLoading methodu içinde bu kontrolün ufak bir örneğini paylaşabilirmisiniz.
Hocam bi sorum olucak
Loading Screende kullandım bu projenizi ancak her girişte internete bağlı olmasam bile internete bağlısınız yazıyo
Webview ile internet kontrolünü sağladım fakat internet yokken beyaz bir sayfada webviewin içerisindeki link gösteriliyor. Bunun yerine internet yok yazan bir sayfaya yönlendirmesini istiyorum yada boş bir sayfa fark etmez webviewin içerisine yazdığım linkin görünmesini istemiyorum nasıl yapabilirm ?
up
Merhaba, sadece wifi yi kontrol etmemiz mümkün mü? Nasıl olabilir?
sürekli açık kalsa şarjı ne kadar götürür ?
merhaba bunun alert dialoglusu varmı
Onuda sen yapabilirsin:)
https://www.mobilhanem.com/android-alert-dialog-kullanimi/
Brodcast recivere alert dialog eklenmiyor lütfen yardım edin
kodları kullandığımda title bar kayboluyor acaba neden yardımcı olursanız sevinirim