Soru & Cevap

İnternet bağlantı kontrolü sorunu ...

24.03.2018 - 02:41
if(InternetKontrol()){

            Toast.makeText(this, "Giriş Yapıldı", Toast.LENGTH_SHORT).show();

        }else{
            Toast.makeText(this, "İnternet Bağlantınızı Kontrol Edin", Toast.LENGTH_SHORT).show();
        }

    }

    public boolean InternetKontrol() {
        ConnectivityManager manager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
        if (manager.getActiveNetworkInfo() != null
                && manager.getActiveNetworkInfo().isAvailable()
                && manager.getActiveNetworkInfo().isConnected()) {
            return true;
        } else {
            return false;
        }

    }

Bu kodlara göre deniyorum sadece internet açıksa giriş yapıldı internet kaoalıysada kontrol edin uyarısı veriyor ama yine programa giriyor bunu nasıl düzenlemeliyim ki hiçbirşekilde açmasın internet yoksa uyarı versin programa giriş yaptırmasın

36 Görüntülenme

5 Cevap

Sitedeki sorulara cevap verebilmek için giriş yapın ya da üye olun.

picture-133451-1525228116.jpg
cnrpltcll
02.05.2018 - 05:06

 

Bu internet kontrol kodu internet.java diye ekleyebilrsin 

import android.app.AlertDialog; import android.content.BroadcastReceiver; import android.content.Context; import android.content.DialogInterface; import android.content.Intent; import android.net.ConnectivityManager; import android.net.NetworkInfo; public class internet 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(final 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; AlertDialog.Builder builder = new AlertDialog.Builder(context); builder.setMessage("Lütfen internet bağlantınızın varlığını kontrol ediniz.").setPositiveButton("OK", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { System.exit(0); //internet yoksa burda napcağın yazıyo ben programı kapattırıyorum direk mesela } }); final AlertDialog alert = builder.create(); alert.show(); //Toast.makeText(context, "İnternet Yok", Toast.LENGTH_LONG).show(); //Log.v(LOG_TAG, "İnternet Yok!"); return false; } }

 

Bu kodlarda kontrol için

 

import android.annotation.SuppressLint; import android.annotation.TargetApi; import android.content.Intent; import android.content.IntentFilter; import android.net.ConnectivityManager; import android.os.Build; import android.support.v4.widget.DrawerLayout; import android.support.v7.app.ActionBarDrawerToggle; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.util.Log; import android.view.MenuItem; import android.webkit.WebSettings; import android.webkit.WebView; import android.webkit.WebViewClient; public class hepsi extends AppCompatActivity { DrawerLayout drawerLayout; ActionBarDrawerToggle drawerToggle; private static final String LOG_TAG = "Otomatik internet Kontrol¸"; private internet receiver; @TargetApi(Build.VERSION_CODES.HONEYCOMB) @SuppressLint("SetJavaScriptEnabled") protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_hepsi); IntentFilter filter = new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION); receiver = new internet(); registerReceiver(receiver, filter); WebView myWebView = (WebView) findViewById(R.id.wv1); myWebView.getSettings().setJavaScriptCanOpenWindowsAutomatically(true); myWebView.getSettings().setBuiltInZoomControls(true); myWebView.getSettings().setDisplayZoomControls(false); myWebView.getSettings().setAllowFileAccess(true); myWebView.getSettings().setDomStorageEnabled(true); myWebView.getSettings().setJavaScriptEnabled(true); myWebView.getSettings().setJavaScriptEnabled(true); myWebView.loadUrl("https://siteadı"); WebSettings webSettings = myWebView.getSettings(); webSettings.setJavaScriptEnabled(true); myWebView.setWebViewClient(new WebViewClient()); } @SuppressLint("LongLogTag") @Override protected void onDestroy() { Log.v(LOG_TAG, "onDestory"); super.onDestroy(); unregisterReceiver(receiver); } }

İnternet varsa site yüklenir yoksa bildirim gelir internet bağlantınızı kontrol ve program kapanır 

picture-83215-1466292306.jpg
farukjaa23
27.03.2018 - 10:21

Uygulama açılışı için giriş animasyonu oluşturduysan internet kontrolünü oraya ekle. 

if(InternetKontrol()){

            Toast.makeText(this, "Giriş Yapıldı", Toast.LENGTH_SHORT).show();
Intent intent = new Intent(LoginAnimation.this, MainActivity.class);
startActivity(intent); // Burası ana activitye geçmeni sağlayan kod. Sınıf isimlerini kendin uyarla.

        }else{
            Toast.makeText(this, "İnternet Bağlantınızı Kontrol Edin", Toast.LENGTH_SHORT).show();
Intent intenta = new Intent(LoginAnimation.this, LoginAnimation.class);
startActivity(intenta); //Burasıda internet bağlantısı olmadığında sürekli internet bağlantısını kontrol etmesi için activitynin başlamasını sağlayan kod.  
        }

    }

Burda yazdıklarım sadece bir örnek. Loginactivityi yeniden başlatmak internet bağlantısı olmadığında sonsuz loopa düşüyorsa ve uygulama hata veriyorsa, bağlantı olmadığında çalışacak olan intenti silersin ve ardına toast mesajında internete bağlanıp lütfen uygulamayı tekrardan açın gibi bir mesaj bırakabilirsin. Ana fikir internet bağlantını uygulamanın internet yokken açılmasını istemediğin activitye ekleme. Ondan önce çalışacak herhangi bir activitye ekle. 

İyi çaışmalar :)

Profile picture for user N4K081
N4K081
27.03.2018 - 06:15

Ya benim asıl sorunum şu webview ile çektiğim urlnin görünmesini istemiyorum tek istediğim şey bu aslında.. Sağda solda bunu anlatanlar var ancak deniyorum kod galiba çalışmıyor yada ben doğru yazamıyorum olmuyor bir türlü..

Uygulamaya internet kapalıyken girerlerse url görünüyor bende bunu internet bağlantı kontrolü metoduyla aştıklarını biliyorum ama bunu nasıl yapıcaz ?

picture-83215-1466292306.jpg
farukjaa23
26.03.2018 - 11:47

Merhaba Okan,

Aklıma gelen bir fikirden bahsetmek istiyorum. Eğer ki kişinin internet bağlantısı yok ise, internet bağlantısının sorgulandığı activity'i yeniden başlatabilirsin ve böylece internet bağlantısı sürekli kontrol edilebilir bir duruma gelecektir. Eğer ki internet bağlantısı var ise, kişinin gitmesi gereken activitye ulaşmasını sağlayabilirsin. Umarım demek istediğim algoritmayı anlabilmişsindir. 

İyi çalışmalar dilerim.

Okan
27.03.2018 - 06:12
:) tamamda bunu nasıl yapıcaz hangi kod ile mesele bu zaten
Profile picture for user N4K081
N4K081
25.03.2018 - 01:55

Kimse bilmiyor mu çok zor bir sorumu sordum ?