• 24-01-2017, 20:34:38
    #1
    Arkadaşlar merhaba,

    Android Studio ile webview uygulaması yaptım. Girişte internet kontrolünü sağlıyorum. Eğer inetrenet yoksa farklı bir activity çaılışıyor. Fakat uygulama açıldıktan sonra internet bağlantısı kesildiğinde, herhangi bir link tıklarsam "web sayfası mevcut değil" diye hata sayfası çıkıyor. Bu hatanın çıkmasını nasıl engelleyebilirim. Link tıklandığından internet yoksa farklı bir activity çalışsın.
  • 24-01-2017, 22:14:06
    #2
    webclienti internet kontrolünün içine alırsanız sorun çözülecektir.
  • 24-01-2017, 22:58:59
    #3
        private void connectionControl() {
            if(isNetworkStatusAvialable (getApplicationContext())) {
                //
            }
            else
            {
                AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
                builder.setTitle("SShop");
                builder.setMessage("İnternet bağlantınız bulunmamaktadır.");
                builder.setCancelable(false);
                builder.setPositiveButton("Kapat", new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialog, int id) {
                        finish();
                        System.exit(0);
                    }
                });
                builder.show();
    
            }
        }
    
        public static boolean isNetworkStatusAvialable (Context context) {
            ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
            if (connectivityManager != null)
            {
                NetworkInfo netInfos = connectivityManager.getActiveNetworkInfo();
                if(netInfos != null)
                    if(netInfos.isConnected())
                        return true;
            }
            return false;
        }
    Bunları ekledikten sonra onCreate'de connectionControl fonksiyonunu çağırarak yapabilirsin.
  • 26-01-2017, 16:40:28
    #4
    Kimlik doğrulama veya yönetimden onay bekliyor.
    Webview ın delege methodlarını override etmen gerekiyor. Eğer yükleme başarısız olursa; şu alert diyaloğunu göster yada şu aktivity i aç gibisinden bir kontrol eklenebilir. Önrke kullanım şunun gibi birşey

    webView.setWebViewClient(new WebViewClient(){

    @Override
    public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
    // Sayfayı goruntuleyemedi. Bir uyarı göster webviewı gizle vs.
    }
    });
  • 26-01-2017, 20:24:14
    #5
    AwoApp adlı üyeden alıntı: mesajı görüntüle
    webclienti internet kontrolünün içine alırsanız sorun çözülecektir.
    Hocam tam olarak nereye eklemem lazım. Denedim ama hata verdi. Kodlar aşağıdaki gibi.
    package com.example.ramazan.myapplication;
    
    import android.annotation.SuppressLint;
    import android.app.Activity;
    import android.app.AlertDialog;
    import android.content.BroadcastReceiver;
    import android.content.DialogInterface;
    import android.content.Intent;
    import android.os.Bundle;
    import android.support.annotation.DrawableRes;
    import android.util.Log;
    import android.view.View;
    import android.webkit.WebView;
    import android.webkit.WebViewClient;
    import android.content.Context;
    import android.net.ConnectivityManager;
    import android.net.NetworkInfo;
    import android.widget.Toast;
    
    public class MainActivity extends Activity {
        WebView myWebView;
        @SuppressLint("SetJavaScriptEnabled")
          protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            WebView myWebView = (WebView) findViewById(R.id.web_engine);
            myWebView.setWebViewClient(new MyBrowser());
            myWebView.clearCache(true);
            myWebView.clearHistory();
            myWebView.getSettings().setJavaScriptEnabled(true);
            myWebView.getSettings().setLoadsImagesAutomatically(true);
            myWebView.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY);
    
            InternetControl kontrol = new InternetControl();
            Boolean internetVarMi = kontrol.checkNow(getApplicationContext());
            if(internetVarMi == false){
            Toast.makeText(getApplicationContext(), "İnternet Bağlantınız Yok!", Toast.LENGTH_LONG).show();
    finish();
    
                 Intent activityHata = new Intent(getApplicationContext(),ActivityHata.class);
               startActivity(activityHata);
            }else{
                Toast.makeText(getApplicationContext(), "İnternet Bağlantınız Mevcut", Toast.LENGTH_LONG).show();
                myWebView.loadUrl("http://www.ruyatabirleriara.com/");
            }
        }
    
        private class MyBrowser extends WebViewClient {
            @Override
            public void onPageFinished(WebView view, String url) {
                if (findViewById(R.id.splach_screen).getVisibility() == View.VISIBLE) {
                    findViewById(R.id.main_view).setVisibility(View.VISIBLE);
                    findViewById(R.id.splach_screen).setVisibility(View.GONE);
                }
            }
        }
    
           @Override
        public void onBackPressed() {
            this.myWebView = (WebView) findViewById(R.id.web_engine);
                 if(myWebView.canGoBack()){
                       myWebView.goBack();
            }else{
                     AlertDialog.Builder alertDialog = new AlertDialog.Builder(this);
                     alertDialog.setTitle("www.ruyatabirleriara.com");
                     alertDialog.setIcon(R.drawable.ruya_favicon);
                     alertDialog.setMessage("Uygulamadan Çıkmak İstediğinize Emin misiniz?");
                     alertDialog.setPositiveButton("Evet", new DialogInterface.OnClickListener() {
                         public void onClick(DialogInterface dialog, int which) {
                             finish();
                         }
                     });
                     alertDialog.setNegativeButton("Hayır", new DialogInterface.OnClickListener() {
                         public void onClick(DialogInterface dialog, int which) {
                         }
                     });
                     alertDialog.show();
            }
        }
    }